Re: no need to check for NULL before calling kfree() -fs/ext2/

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

 




Hi Jesper,
I'm sending this mail to mailing list coz in my company we have some
restrictions on o/g mails, Sorry for that...
Lemme ask u smthing, herez the code
    199     sndpkt = (RSI_sndpkt_t *) RSI_MALLOC(sizeof(RSI_sndpkt_t));
    200     sndpkt->buf_list = (RSI_buf_t *) RSI_MALLOC(sizeof(RSI_buf_t));
Here if malloc fails sndpkt->buf_list should be null right ?? & if i
proceed further ..

    201     sndpkt->buf_list->start_addr = buf;
    202     sndpkt->buf_list->length     = length;
Here itself this should crash right ?? But its not crashing here !!! Wt
was happening was

201 sndpkt->buf_list->start_addr = buf; was not getting initailised & wn
we try to access this variable latter
this was crashing.

Actally i'm not checking for return value from kmalloc thatz a mistake,
I'll fix this but why is it not crashing in line # 201 ??

Jesper Juhl wrote:

On Wed, 30 Mar 2005, P Lavin wrote:

Date: Wed, 30 Mar 2005 12:45:01 +0530
From: P Lavin <[email protected]>
To: [email protected]
Subject: Re: no need to check for NULL before calling kfree() -fs/ext2/

Hi,
In my wlan driver module, i allocated some memory using kmalloc in interrupt
context, this one failed but its not returning NULL ,

kmalloc() should always return NULL if the allocation failed.


so i was proceeding
further everything was going wrong... & finally the kernel crahed. Can any one
of you tell me why this is happening ? i cannot use GFP_KERNEL because i'm
calling this function from interrupt context & it may block. Any other

If you need to allocate memory from interrupt context you should be using GFP_ATOMIC (or, if possible, do the allocation earlier in a different context).


I'm using this flag only, this flag does not guarentee mem allocation,
right ??

solution for this ?? I'm concerned abt why kmalloc is not returning null if
its not a success ??

I have no explanation for that, are you sure that's really what's happening?


I'm not checking this , but my explanation is given above.

Is it not necessary to check for NULL before calling kfree() ??

No, it is not nessesary to check for NULL before calling kfree() since kfree() does
void kfree (const void *objp)
{
... if (!objp)
               return;
	...
}

So, if you pass kfree() a NULL pointer it deals with it itself, you don't need to check that explicitly before calling kfree() - that's redundant.



Regs,
Lavin
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux