scsi: sd: add check for changing allow_restart
PATCH 1/1 scsi: sd: add check for changing allow_restart
/sys/class/scsi_disk/0:2:0:0/allow_restart can be changed to 0 unexpectly by writing invalid string, like following:
echo asdf > /sys/class/scsi_disk/0:2:0:0/allow_restart
--- drivers/scsi/sd.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
drivers/scsi/sd.c +6 -1
@@ -253,6 +253,7 @@ static ssize_t allow_restart_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { + int err, v;struct scsi_disk *sdkp =to_scsi_disk (dev);struct scsi_device *sdp = sdkp->device;
@@ -262,7 +263,11 @@ allow_restart_store(struct device *dev, struct device_attribute *attr,if (sdp->type !=TYPE_DISK && sdp->type !=TYPE_ZBC )return -EINVAL ; - sdp->allow_restart =simple_strtoul (buf,NULL ,10 ); + err =kstrtoint (buf,10 , &v); +if (err || (v !=0 && v !=1 )) +return -EINVAL ; + + sdp->allow_restart = v;return count; }
Signature · 1 line
2.9.4
Quoted 38 lines · weiping zhang
/sys/class/scsi_disk/0:2:0:0/allow_restart can be changed to 0 unexpectly by writing invalid string, like following:
echo asdf > /sys/class/scsi_disk/0:2:0:0/allow_restart
Signed-off-by weiping zhang <[email protected]>--- drivers/scsi/sd.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)drivers/scsi/sd.c +6
-1@@ -253,6 +253,7 @@ static ssize_t allow_restart_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { + int err, v;struct scsi_disk *sdkp =to_scsi_disk (dev);struct scsi_device *sdp = sdkp->device;@@ -262,7 +263,11 @@ allow_restart_store(struct device *dev, struct device_attribute *attr,if (sdp->type !=TYPE_DISK && sdp->type !=TYPE_ZBC )return -EINVAL ; - sdp->allow_restart =simple_strtoul (buf,NULL ,10 ); + err =kstrtoint (buf,10 , &v); +if (err || (v !=0 && v !=1 )) +return -EINVAL ; + + sdp->allow_restart = v;return count; }Signature · 1 line
2.9.4
Hello Martin,
Ping
weiping,
Quoted 4 lines
/sys/class/scsi_disk/0:2:0:0/allow_restart can be changed to 0 unexpectly by writing invalid string, like following:
echo asdf > /sys/class/scsi_disk/0:2:0:0/allow_restart
Please switch to kstrtobool() and fix up manage_start_stop as well.
Thanks!
Signature · 1 line
Martin K. Petersen Oracle Linux Engineering
Quoted 12 lines · Martin K. Petersen
weiping,
Quoted 4 lines
/sys/class/scsi_disk/0:2:0:0/allow_restart can be changed to 0 unexpectly by writing invalid string, like following:
echo asdf > /sys/class/scsi_disk/0:2:0:0/allow_restart
Please switch to
kstrtobool()and fix upmanage_start_stopas well.Thanks!
Thanks, I'll send v2 later.