Message ID | 20250224095826.16458-5-nicolas.bouchinet@clip-os.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Fixes multiple sysctl bound checks | expand |
Hi Nicolas! > --- a/drivers/scsi/scsi_sysctl.c > +++ b/drivers/scsi/scsi_sysctl.c > @@ -17,7 +17,9 @@ static const struct ctl_table scsi_table[] = { > .data = &scsi_logging_level, > .maxlen = sizeof(scsi_logging_level), > .mode = 0644, > - .proc_handler = proc_dointvec }, > + .proc_handler = proc_dointvec_minmax, > + .extra1 = SYSCTL_ZERO, > + .extra2 = SYSCTL_INT_MAX }, scsi_logging_level is a bitmask and should be unsigned.
On 2/25/25 02:20, Martin K. Petersen wrote: > Hi Nicolas! > >> --- a/drivers/scsi/scsi_sysctl.c >> +++ b/drivers/scsi/scsi_sysctl.c >> @@ -17,7 +17,9 @@ static const struct ctl_table scsi_table[] = { >> .data = &scsi_logging_level, >> .maxlen = sizeof(scsi_logging_level), >> .mode = 0644, >> - .proc_handler = proc_dointvec }, >> + .proc_handler = proc_dointvec_minmax, >> + .extra1 = SYSCTL_ZERO, >> + .extra2 = SYSCTL_INT_MAX }, > scsi_logging_level is a bitmask and should be unsigned. > Hi Martin, Thank's for your review. Does `scsi_logging_level` needs the full range of a unsigned 32-bit integer ? As it was using `proc_dointvec`, it was capped to an INT_MAX. If it effectively need the full range of an unsigned 32-bit integer, the `proc_handler` could be changed to `proc_douintvec` as suggested by Chuck. Best regards, Nicolas
diff --git a/drivers/scsi/scsi_sysctl.c b/drivers/scsi/scsi_sysctl.c index be4aef0f4f996..055a03a83ad68 100644 --- a/drivers/scsi/scsi_sysctl.c +++ b/drivers/scsi/scsi_sysctl.c @@ -17,7 +17,9 @@ static const struct ctl_table scsi_table[] = { .data = &scsi_logging_level, .maxlen = sizeof(scsi_logging_level), .mode = 0644, - .proc_handler = proc_dointvec }, + .proc_handler = proc_dointvec_minmax, + .extra1 = SYSCTL_ZERO, + .extra2 = SYSCTL_INT_MAX }, }; static struct ctl_table_header *scsi_table_header;