Commit b843add
scsi: qla2xxx: Fix mem access after free
System crash, where driver is accessing scsi layer's
memory (scsi_cmnd->device->host) to search for a well known internal
pointer (vha). The scsi_cmnd was released back to upper layer which
could be freed, but the driver is still accessing it.
7 [ffffa8e8d2c3f8d0] page_fault at ffffffff86c010fe
[exception RIP: __qla2x00_eh_wait_for_pending_commands+240]
RIP: ffffffffc0642350 RSP: ffffa8e8d2c3f988 RFLAGS: 00010286
RAX: 0000000000000165 RBX: 0000000000000002 RCX: 00000000000036d8
RDX: 0000000000000000 RSI: ffff9c5c56535188 RDI: 0000000000000286
RBP: ffff9c5bf7aa4a58 R8: ffff9c589aecdb70 R9: 00000000000003d1
R10: 0000000000000001 R11: 0000000000380000 R12: ffff9c5c5392bc78
R13: ffff9c57044ff5c0 R14: ffff9c56b5a3aa00 R15: 00000000000006db
ORIG_RAX: ffffffffffffffff CS: 0010 SS: 0018
8 [ffffa8e8d2c3f9c8] qla2x00_eh_wait_for_pending_commands at ffffffffc0646dd5 [qla2xxx]
9 [ffffa8e8d2c3fa00] __qla2x00_async_tm_cmd at ffffffffc0658094 [qla2xxx]
Remove access of freed memory. Currently the driver was checking to see if
scsi_done was called by seeing if the sp->type has changed. Instead,
check to see if the command has left the oustanding_cmds[] array as
sign of scsi_done was called.
Cc: stable@vger.kernel.org
Signed-off-by: Quinn Tran <qutran@marvell.com>
Signed-off-by: Nilesh Javali <njavali@marvell.com>
Link: https://lore.kernel.org/r/20230428075339.32551-6-njavali@marvell.com
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>1 parent 9ae615c commit b843add
2 files changed
Lines changed: 95 additions & 73 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1862 | 1862 | | |
1863 | 1863 | | |
1864 | 1864 | | |
1865 | | - | |
1866 | | - | |
1867 | | - | |
| 1865 | + | |
| 1866 | + | |
| 1867 | + | |
1868 | 1868 | | |
1869 | 1869 | | |
1870 | 1870 | | |
| |||
1899 | 1899 | | |
1900 | 1900 | | |
1901 | 1901 | | |
1902 | | - | |
1903 | | - | |
| 1902 | + | |
1904 | 1903 | | |
1905 | 1904 | | |
1906 | 1905 | | |
1907 | 1906 | | |
| 1907 | + | |
| 1908 | + | |
| 1909 | + | |
| 1910 | + | |
| 1911 | + | |
| 1912 | + | |
| 1913 | + | |
| 1914 | + | |
| 1915 | + | |
| 1916 | + | |
| 1917 | + | |
| 1918 | + | |
| 1919 | + | |
| 1920 | + | |
1908 | 1921 | | |
1909 | 1922 | | |
1910 | 1923 | | |
| |||
3237 | 3250 | | |
3238 | 3251 | | |
3239 | 3252 | | |
3240 | | - | |
3241 | 3253 | | |
3242 | 3254 | | |
3243 | 3255 | | |
3244 | 3256 | | |
3245 | 3257 | | |
3246 | 3258 | | |
| 3259 | + | |
3247 | 3260 | | |
3248 | 3261 | | |
3249 | 3262 | | |
| |||
3514 | 3527 | | |
3515 | 3528 | | |
3516 | 3529 | | |
| 3530 | + | |
| 3531 | + | |
| 3532 | + | |
3517 | 3533 | | |
3518 | 3534 | | |
3519 | 3535 | | |
| |||
3590 | 3606 | | |
3591 | 3607 | | |
3592 | 3608 | | |
| 3609 | + | |
3593 | 3610 | | |
3594 | 3611 | | |
3595 | 3612 | | |
| |||
3608 | 3625 | | |
3609 | 3626 | | |
3610 | 3627 | | |
3611 | | - | |
3612 | 3628 | | |
3613 | 3629 | | |
3614 | 3630 | | |
| |||
3628 | 3644 | | |
3629 | 3645 | | |
3630 | 3646 | | |
| 3647 | + | |
| 3648 | + | |
| 3649 | + | |
| 3650 | + | |
| 3651 | + | |
| 3652 | + | |
| 3653 | + | |
| 3654 | + | |
3631 | 3655 | | |
3632 | 3656 | | |
3633 | 3657 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1078 | 1078 | | |
1079 | 1079 | | |
1080 | 1080 | | |
1081 | | - | |
1082 | | - | |
1083 | | - | |
1084 | | - | |
1085 | | - | |
1086 | | - | |
1087 | | - | |
1088 | | - | |
1089 | | - | |
1090 | | - | |
1091 | | - | |
1092 | | - | |
1093 | | - | |
1094 | | - | |
1095 | | - | |
1096 | | - | |
1097 | | - | |
1098 | | - | |
1099 | | - | |
1100 | | - | |
1101 | | - | |
1102 | | - | |
1103 | | - | |
1104 | | - | |
1105 | | - | |
1106 | | - | |
1107 | | - | |
1108 | | - | |
1109 | | - | |
1110 | | - | |
1111 | | - | |
1112 | | - | |
1113 | | - | |
1114 | | - | |
1115 | | - | |
1116 | | - | |
1117 | | - | |
1118 | 1081 | | |
1119 | 1082 | | |
1120 | 1083 | | |
| |||
1365 | 1328 | | |
1366 | 1329 | | |
1367 | 1330 | | |
| 1331 | + | |
| 1332 | + | |
| 1333 | + | |
1368 | 1334 | | |
1369 | 1335 | | |
1370 | 1336 | | |
| |||
1378 | 1344 | | |
1379 | 1345 | | |
1380 | 1346 | | |
| 1347 | + | |
| 1348 | + | |
| 1349 | + | |
1381 | 1350 | | |
1382 | 1351 | | |
1383 | 1352 | | |
1384 | | - | |
1385 | | - | |
1386 | | - | |
1387 | | - | |
1388 | | - | |
1389 | | - | |
1390 | | - | |
1391 | | - | |
1392 | | - | |
1393 | | - | |
1394 | | - | |
1395 | | - | |
1396 | | - | |
1397 | | - | |
1398 | | - | |
1399 | | - | |
1400 | | - | |
1401 | | - | |
1402 | | - | |
1403 | | - | |
1404 | | - | |
1405 | | - | |
1406 | | - | |
1407 | | - | |
1408 | | - | |
1409 | | - | |
| 1353 | + | |
| 1354 | + | |
1410 | 1355 | | |
1411 | | - | |
1412 | | - | |
1413 | 1356 | | |
| 1357 | + | |
| 1358 | + | |
| 1359 | + | |
| 1360 | + | |
| 1361 | + | |
| 1362 | + | |
| 1363 | + | |
| 1364 | + | |
| 1365 | + | |
| 1366 | + | |
| 1367 | + | |
| 1368 | + | |
| 1369 | + | |
| 1370 | + | |
| 1371 | + | |
| 1372 | + | |
| 1373 | + | |
| 1374 | + | |
| 1375 | + | |
| 1376 | + | |
| 1377 | + | |
| 1378 | + | |
| 1379 | + | |
| 1380 | + | |
| 1381 | + | |
| 1382 | + | |
| 1383 | + | |
| 1384 | + | |
| 1385 | + | |
| 1386 | + | |
| 1387 | + | |
| 1388 | + | |
| 1389 | + | |
| 1390 | + | |
| 1391 | + | |
| 1392 | + | |
| 1393 | + | |
| 1394 | + | |
| 1395 | + | |
| 1396 | + | |
| 1397 | + | |
| 1398 | + | |
| 1399 | + | |
| 1400 | + | |
| 1401 | + | |
| 1402 | + | |
| 1403 | + | |
| 1404 | + | |
| 1405 | + | |
| 1406 | + | |
| 1407 | + | |
| 1408 | + | |
| 1409 | + | |
1414 | 1410 | | |
1415 | | - | |
| 1411 | + | |
| 1412 | + | |
| 1413 | + | |
1416 | 1414 | | |
1417 | 1415 | | |
1418 | 1416 | | |
| |||
0 commit comments