From mboxrd@z Thu Jan 1 00:00:00 1970 From: luzmaximilian@gmail.com (Maximilian Luz) Date: Thu, 11 Apr 2019 19:39:43 +0200 Subject: Potential bug in queue_count_set In-Reply-To: References: Message-ID: <236178b1-7c56-1627-eed5-26706c60f71f@gmail.com> >>> >>> It looks like lines 154, 155 don't achieve anything as `n` is not being >>> used afterwards. Sorry if this is already known or a non-issue, just >>> wanted to let you guys know. >>> >> >> It looks like module parameter "write_queues" is set to the actual given >> value (val) without considering reduced number of queues in case given >> value is greater than nr_cpus. >> >> I think that might need sprintf() or something like this to make the >> actual value reduced in that case. > > > Sorry, the "val" is const so that we cannot go through it with sprintf(). > My bad. This function might return an error if invalid number is given. > > Sorry for the confusion. > > Have posted patches for it. > http://lists.infradead.org/pipermail/linux-nvme/2019-April/023369.html I honestly know too little about module-parameters to give a qualified answer here, but could returning -EINVAL here break things? From what I can tell it should be possible to bypass the param_set_int function and set *(kp->arg) directly, which would reproduce the param_set_int functionality (kernel/params.c:223). Alternatively one could argue that after a successful kstrtoint call, we can strncpy the input into a buffer with fixed length of 11 (10 digits + null, if I'm not mistaken) and use that as input for param_set_int.