Evgeniy Polyakov <[email protected]> wrote:
>
> > In the previous connector, cn_netlink_send(struct cn_msg *msg, u32
> > __groups) called alloc_skb(size, GFP_ATOMIC). Now a third parameter is
> > used with cn_netlink_send() in order to call alloc_skb(size, gfp_mask)
> > with a specific gfp_mask. So, I'm using GFP_ATOMIC as the third argument
> > to keep the same behavior.
>
> It was atomic there to allow non process context usage.
> Since do_fork() is executed in process context you can use GFP_KERNEL with
> __GFP_NOFAIL - it will guarantee memory allocation.
Please avoid using __GFP_NOFAIL.
__GFP_NOFAIL was introduced because we had lots of places in the kernel
which were doing:
try_again:
p = allocate_something();
if (!p) {
/* A am too lame to handle this */
delay_in_some_manner();
goto try_again;
}
__GFP_NOFAIL simply takes the above bad code and centralises it so it's
always done in the same way and so that it's easily greppable for. But
it's still bad (ie: deadlocky) code.
Well-behaved code should notice the allocation failure and should back out
gracefully.
-
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]