mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-30 15:43:30 +00:00
aacraid: IOCTL pass-through command fix
The Linux aacriad driver fails to detect the case of SG list count=0 on IOCTL pass-through command and cause intermittent fault. The result is the Linux aacriad driver send down IOCTL pass-through command with one not initialized SG list to firmware when receiving SG list count =0 on pass-through command. Signed-off-by: Mahesh Rajashekhara <Mahesh.Rajashekhara@pmcs.com> Reviewed-by: Hannes Reinecke <hare@suse.de> Reviewed-by: Murthy Bhat <Murthy.Bhat@pmcs.com> Signed-off-by: James Bottomley <JBottomley@Odin.com>
This commit is contained in:
parent
46154a0224
commit
2f5d1f7998
@ -689,7 +689,10 @@ static int aac_send_raw_srb(struct aac_dev* dev, void __user * arg)
|
|||||||
kfree (usg);
|
kfree (usg);
|
||||||
}
|
}
|
||||||
srbcmd->count = cpu_to_le32(byte_count);
|
srbcmd->count = cpu_to_le32(byte_count);
|
||||||
psg->count = cpu_to_le32(sg_indx+1);
|
if (user_srbcmd->sg.count)
|
||||||
|
psg->count = cpu_to_le32(sg_indx+1);
|
||||||
|
else
|
||||||
|
psg->count = 0;
|
||||||
status = aac_fib_send(ScsiPortCommand64, srbfib, actual_fibsize, FsaNormal, 1, 1,NULL,NULL);
|
status = aac_fib_send(ScsiPortCommand64, srbfib, actual_fibsize, FsaNormal, 1, 1,NULL,NULL);
|
||||||
} else {
|
} else {
|
||||||
struct user_sgmap* upsg = &user_srbcmd->sg;
|
struct user_sgmap* upsg = &user_srbcmd->sg;
|
||||||
@ -775,7 +778,10 @@ static int aac_send_raw_srb(struct aac_dev* dev, void __user * arg)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
srbcmd->count = cpu_to_le32(byte_count);
|
srbcmd->count = cpu_to_le32(byte_count);
|
||||||
psg->count = cpu_to_le32(sg_indx+1);
|
if (user_srbcmd->sg.count)
|
||||||
|
psg->count = cpu_to_le32(sg_indx+1);
|
||||||
|
else
|
||||||
|
psg->count = 0;
|
||||||
status = aac_fib_send(ScsiPortCommand, srbfib, actual_fibsize, FsaNormal, 1, 1, NULL, NULL);
|
status = aac_fib_send(ScsiPortCommand, srbfib, actual_fibsize, FsaNormal, 1, 1, NULL, NULL);
|
||||||
}
|
}
|
||||||
if (status == -ERESTARTSYS) {
|
if (status == -ERESTARTSYS) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user