RE: can a kmalloc be both GFP_ATOMIC and GFP_KERNEL at the sametime?

From: Robert P. J. Day
Date: Sat Apr 28 2007 - 10:12:08 EST

On Sat, 28 Apr 2007, Shan, Guo Wen (Gavin) wrote:

> #define GFP_ATOMIC (__GFP_HIGH)
> #define GFP_NOIO (__GFP_WAIT)
> #define GFP_NOFS (__GFP_WAIT | __GFP_IO)
> #define GFP_KERNEL (__GFP_WAIT | __GFP_IO | __GFP_FS)
> -----Original Message-----
> From: Robert P. J. Day [mailto:rpjday@xxxxxxxxxxxxxx]
> Sent: Saturday, April 28, 2007 9:41 PM
> To: Linux Kernel Mailing List
> Subject: can a kmalloc be both GFP_ATOMIC and GFP_KERNEL at the same
> time?
> i'd always assumed that the type flags of GFP_ATOMIC and GFP_KERNEL
> were mutually exclusive when it came to calling kmalloc(), at least
> based on everything i'd read. so i'm not sure how to interpret the
> following:
> drivers/scsi/aic7xxx_old.c: aic_dev = kmalloc(sizeof(struct aic_dev_data), GFP_ATOMIC | GFP_KERNEL);
> drivers/message/i2o/device.c: resblk = kmalloc(buflen + 8, GFP_KERNEL | GFP_ATOMIC);
> clarification?

oh, i'm *aware* of the definitions of those flags, but every single
source i've ever read has *strongly* suggested that you don't use
those two flags together so i was surprised to see those combinations.
(as an example, love's kernel book, p. 192, shows a table of valid
combinations of flags to use, but doesn't mention the one above.)

and, on the other hand, if they *are* legal to use together, i guess
i'm kind of surprised that there would be only two instances of it.

in any case, i'll just assume that the above is valid and i'll go back
to reading up on it until i convince myself. thanks.


Robert P. J. Day
Linux Consulting, Training and Annoying Kernel Pedantry
Waterloo, Ontario, CANADA
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at