mirror of
https://github.com/opnsense/src.git
synced 2026-06-04 22:32:43 -04:00
ahci/siis/mvs: Fix panics after 3394d4239b.
Full CCB header overwrites made frees go into wrong zones, causing kernel panics. Instead of copying full header use xpt_setup_ccb(), since the only field I see used from all the header is target_id. PR: 262263
This commit is contained in:
parent
d746ab215c
commit
25375b1415
3 changed files with 6 additions and 3 deletions
|
|
@ -2178,7 +2178,8 @@ completeall:
|
|||
ahci_reset(ch);
|
||||
return;
|
||||
}
|
||||
ccb->ccb_h = ch->hold[i]->ccb_h; /* Reuse old header. */
|
||||
xpt_setup_ccb(&ccb->ccb_h, ch->hold[i]->ccb_h.path,
|
||||
ch->hold[i]->ccb_h.pinfo.priority);
|
||||
if (ccb->ccb_h.func_code == XPT_ATA_IO) {
|
||||
/* READ LOG */
|
||||
ccb->ccb_h.recovery_type = RECOVERY_READ_LOG;
|
||||
|
|
|
|||
|
|
@ -1801,7 +1801,8 @@ completeall:
|
|||
mvs_reset(dev);
|
||||
return;
|
||||
}
|
||||
ccb->ccb_h = ch->hold[i]->ccb_h; /* Reuse old header. */
|
||||
xpt_setup_ccb(&ccb->ccb_h, ch->hold[i]->ccb_h.path,
|
||||
ch->hold[i]->ccb_h.pinfo.priority);
|
||||
if (ccb->ccb_h.func_code == XPT_ATA_IO) {
|
||||
/* READ LOG */
|
||||
ccb->ccb_h.recovery_type = RECOVERY_READ_LOG;
|
||||
|
|
|
|||
|
|
@ -1396,7 +1396,8 @@ completeall:
|
|||
siis_reset(dev);
|
||||
return;
|
||||
}
|
||||
ccb->ccb_h = ch->hold[i]->ccb_h; /* Reuse old header. */
|
||||
xpt_setup_ccb(&ccb->ccb_h, ch->hold[i]->ccb_h.path,
|
||||
ch->hold[i]->ccb_h.pinfo.priority);
|
||||
if (ccb->ccb_h.func_code == XPT_ATA_IO) {
|
||||
/* READ LOG */
|
||||
ccb->ccb_h.recovery_type = RECOVERY_READ_LOG;
|
||||
|
|
|
|||
Loading…
Reference in a new issue