Re: Checking of NULL with __GFP_NOFAIL in kzalloc()

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

 



On Mon, Mar 2, 2009 at 8:23 AM, Sandeep K Sinha <sandeepksinha@xxxxxxxxx> wrote:
>>>>>>        new_transaction = kzalloc(sizeof(*new_transaction),
>
> Here new_transaction is a pointer and *new_transaction is its value.
> So, the value can be zero here ?
> Am I going wrong somewhere, manish ?

Yes, In C pointers, *new_transaction with sizeof will give the sizeof object.

/home/mkatiyar/progs> cat z.c
#include<stdio.h>
int main() {
  int *ptr;
  int i = 0;
  ptr = &i;
  printf("*ptr = %d, size = %d\n", *ptr, sizeof(*ptr));
  return 0;
}

/home/mkatiyar/progs> ./a.out
*ptr = 0, size = 4

>
> If not then,
> May be its all about defensive programming, you know !!!

I also think so, and that is why I think this can be
removed.....because there are many places in current kernel code where
we are not checking for NULL after using __GFP_NOFAIL

Thanks -
Manish

>
> On Sun, Mar 1, 2009 at 10:59 PM, Manish Katiyar <mkatiyar@xxxxxxxxx> wrote:
>> On Sun, Mar 1, 2009 at 10:42 PM, Sandeep K Sinha
>> <sandeepksinha@xxxxxxxxx> wrote:
>>> I meant, what if you invoke kzalloc with '0' by any chance.
>>> It will return and that too with a NULL.
>>
>> But here it is sizeof(transaction_t), which is definitely not zero.
>>
>> Thanks -
>> Manish
>>
>>
>>>
>>>
>>> On Sun, Mar 1, 2009 at 6:39 PM, Manish Katiyar <mkatiyar@xxxxxxxxx> wrote:
>>>> On Sun, Mar 1, 2009 at 4:39 PM, Sandeep K Sinha <sandeepksinha@xxxxxxxxx> wrote:
>>>>> On Sun, Mar 1, 2009 at 2:09 PM, Manish Katiyar <mkatiyar@xxxxxxxxx> wrote:
>>>>>> Hi,
>>>>>>
>>>>>> While going through jbd code, I was wondering why do we need to check
>>>>>> new_transaction for NULL, if we are passing __GFP_NOFAIL ?
>>>>>> Last code change around this code was when Ted converted kmalloc to
>>>>>> kzalloc, but since he also didn't remove it I am guessing there would
>>>>>> be some good reason for it. Can someone enlighten me ?
>>>>>>
>>>>>> start_this_handle() {
>>>>>> ..........
>>>>>>        ..........
>>>>>>        new_transaction = kzalloc(sizeof(*new_transaction),
>>>>>>                        GFP_NOFS|__GFP_NOFAIL);
>>>>>>        if (!new_transaction) {
>>>>>>                ret = -ENOMEM;
>>>>>>                goto out;
>>>>>>        }
>>>>>>        ..........
>>>>>> }
>>>>>>
>>>>> True.
>>>>> I agree. What if (*new_transaction) is zero ???
>>>>
>>>> Sorry......... I didn't get you .
>>>>
>>>> Thanks -
>>>> Manish
>>>>
>>>>
>>>>>
>>>>>
>>>>>>
>>>>>> Thanks -
>>>>>> Manish
>>>>>>
>>>>>> --
>>>>>> To unsubscribe from this list: send an email with
>>>>>> "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
>>>>>> Please read the FAQ at http://kernelnewbies.org/FAQ
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Regards,
>>>>> Sandeep.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> “To learn is to change. Education is a process that changes the learner.”
>>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Regards,
>>> Sandeep.
>>>
>>>
>>>
>>>
>>>
>>>
>>> “To learn is to change. Education is a process that changes the learner.”
>>>
>>
>
>
>
> --
> Regards,
> Sandeep.
>
>
>
>
>
>
> “To learn is to change. Education is a process that changes the learner.”
>

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux