Commit c23c03b
firmware: arm_scmi: Fix timeout checks on polling path
Polling mode transactions wait for a reply busy-looping without holding a
spinlock, but currently the timeout checks are based only on elapsed time:
as a result we could hit a false positive whenever our busy-looping thread
is pre-empted and scheduled out for a time greater than the polling
timeout.
Change the checks at the end of the busy-loop to make sure that the polling
wasn't indeed successful or an out-of-order reply caused the polling to be
forcibly terminated.
Fixes: 31d2f80 ("firmware: arm_scmi: Add sync_cmds_completed_on_ret transport flag")
Reported-by: Huangjie <huangjie1663@phytium.com.cn>
Closes: https://lore.kernel.org/arm-scmi/20250123083323.2363749-1-jackhuang021@gmail.com/
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Cc: stable@vger.kernel.org # 5.18.x
Message-Id: <20250310175800.1444293-1-cristian.marussi@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>1 parent 9ca6784 commit c23c03b
1 file changed
Lines changed: 8 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1248 | 1248 | | |
1249 | 1249 | | |
1250 | 1250 | | |
1251 | | - | |
| 1251 | + | |
| 1252 | + | |
1252 | 1253 | | |
1253 | 1254 | | |
1254 | 1255 | | |
| |||
1257 | 1258 | | |
1258 | 1259 | | |
1259 | 1260 | | |
1260 | | - | |
| 1261 | + | |
1261 | 1262 | | |
1262 | 1263 | | |
1263 | 1264 | | |
| |||
1274 | 1275 | | |
1275 | 1276 | | |
1276 | 1277 | | |
| 1278 | + | |
| 1279 | + | |
1277 | 1280 | | |
1278 | 1281 | | |
1279 | 1282 | | |
1280 | 1283 | | |
1281 | 1284 | | |
1282 | 1285 | | |
1283 | | - | |
1284 | | - | |
1285 | | - | |
| 1286 | + | |
| 1287 | + | |
| 1288 | + | |
1286 | 1289 | | |
1287 | 1290 | | |
1288 | 1291 | | |
| |||
0 commit comments