[PATCH] staging: wilc1000: fix check of kthread_run() return value
Vladimir Zapolskiy
vz at mleia.com
Wed Mar 9 23:30:37 UTC 2016
Hi Julian,
On 10.03.2016 01:27, Julian Calaby wrote:
> Hi Vladimir,
>
> On Thu, Mar 10, 2016 at 10:13 AM, Vladimir Zapolskiy <vz at mleia.com> wrote:
>> The kthread_run() function returns either a valid task_struct or
>> ERR_PTR() value, check for NULL is invalid. The change fixes potential
>> oops, e.g. in OOM situation.
>>
>> Signed-off-by: Vladimir Zapolskiy <vz at mleia.com>
>> ---
>> drivers/staging/wilc1000/linux_wlan.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/staging/wilc1000/linux_wlan.c b/drivers/staging/wilc1000/linux_wlan.c
>> index 54fe9d7..5077c30 100644
>> --- a/drivers/staging/wilc1000/linux_wlan.c
>> +++ b/drivers/staging/wilc1000/linux_wlan.c
>> @@ -849,10 +849,10 @@ static int wlan_initialize_threads(struct net_device *dev)
>> PRINT_D(INIT_DBG, "Creating kthread for transmission\n");
>> wilc->txq_thread = kthread_run(linux_wlan_txq_task, (void *)dev,
>> "K_TXQ_TASK");
>> - if (!wilc->txq_thread) {
>> + if (IS_ERR(wilc->txq_thread)) {
>> PRINT_ER("couldn't create TXQ thread\n");
>> wilc->close = 0;
>> - return -ENOBUFS;
>> + return PTR_ERR(wilc->txq_thread);
>
> Are you sure changing the error returned is correct? Do all the
> callers of wlan_initialize_threads() handle the full range of errors
> from kthread_run()?
Have you checked the driver?
This function is called once on initialization, the check on the upper layer
has "if (ret < 0) goto exit_badly;" form.
--
With best wishes,
Vladimir
More information about the devel
mailing list