Search Linux Wireless

RE: linux-4.2-rc4/drivers/staging/wilc1000/linux_mon.c:264: memory leak ?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello there,

________________________________
> but It is not memory leak because If tx queue is complete, kfree() is  
> called in mgmt_tx_complete() funtion. 

Maybe I've been slightly less than clear. I'll have another go.

There is a call to kmalloc around line 250.

Source code is

    mgmt_tx = kmalloc(sizeof(struct tx_complete_mon_data), GFP_ATOMIC);

A few lines later is a second call to kmalloc

   mgmt_tx->buff = kmalloc(len, GFP_ATOMIC);

If the second call fails, then proper tidyup would normally include
calling kfree for the first call. This doesn't happen in the error handling
code for the second call.

   if (mgmt_tx->buff == NULL) {
        PRINT_ER("Failed to allocate memory for mgmt_tx buff\n");
        return WILC_FAIL;
    }

Not a big bug, I admit, but might be worth fixing.
Something like

   if (mgmt_tx->buff == NULL) {
        kfree(mgmt);
        PRINT_ER("Failed to allocate memory for mgmt_tx buff\n");
        return WILC_FAIL;
    }

would probably fix it. 

My apologies for not being clear earlier.


Regards

David Binderman


>  
> Source code is 
>  
>      g_linux_wlan->oup.wlan_add_mgmt_to_tx_que(mgmt_tx, mgmt_tx->buff,  
> mgmt_tx->size, mgmt_tx_complete); 
>  
>      static void mgmt_tx_complete(void *priv, int status) 
>     { 
>          ... 
>          kfree(pv_data->buff); 
>          kfree(pv_data); 
>      } 
>  
> BR. 
> Chris 
>  
> On 2015년 07월 27일 17:20, David Binderman wrote: 
>  
> Hello there, 
>  
> [linux-4.2-rc4/drivers/staging/wilc1000/linux_mon.c:264]: (error) Memory leak: mgmt_tx 
>  
> Source code is 
>  
>      mgmt_tx->buff = kmalloc(len, GFP_ATOMIC); 
>      if (mgmt_tx->buff == NULL) { 
>          PRINT_ER("Failed to allocate memory for mgmt_tx buff\n"); 
>          return WILC_FAIL; 
>  
>      } 
>  
> Suggest add missing call to kfree. 
>  
>  
> Regards 
>  
> David Binderman 
>  
>  
>  
 		 	   		  ��.n��������+%������w��{.n�����{���zW����ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux