[linux-cifs-client] [PATCH] cifs: fix broken GFP_NOFS usage
Günter Kukkukk
linux at kukkukk.com
Sat May 24 17:13:50 GMT 2008
Am Samstag, 24. Mai 2008 schrieb Akinobu Mita:
> Some memory allocations in cifs use GFP_KERNEL | GFP_NOFS as gfs flags
> but GFP_KERNEL | GFP_NOFS equals to GFP_KERNEL. So these GFP_NOFS have
> no effect.
>
> This patch fixes these flags and also removes unnecessary casts to
> mempool_alloc.
>
> Signed-off-by: Akinobu Mita <akinobu.mita at gmail.com>
> Cc: Steve French <sfrench at samba.org>
> Cc: linux-cifs-client at lists.samba.org
> ---
> fs/cifs/misc.c | 6 ++----
> fs/cifs/transport.c | 3 +--
> 2 files changed, 3 insertions(+), 6 deletions(-)
your description above is right, but your patch is
wrong (possibly a typo).
From gfp.h:
#define GFP_NOFS (__GFP_WAIT | __GFP_IO)
#define GFP_KERNEL (__GFP_WAIT | __GFP_IO | __GFP_FS)
So the current used "GFP_KERNEL | GFP_NOFS" could simply read
"GFP_KERNEL".
But in your patch you are using "GFP_NOFS" instead.
Cheers, Günter
>
> Index: 2.6-git/fs/cifs/misc.c
> ===================================================================
> --- 2.6-git.orig/fs/cifs/misc.c
> +++ 2.6-git/fs/cifs/misc.c
> @@ -150,8 +150,7 @@ cifs_buf_get(void)
> but it may be more efficient to always alloc same size
> albeit slightly larger than necessary and maxbuffersize
> defaults to this and can not be bigger */
> - ret_buf = (struct smb_hdr *) mempool_alloc(cifs_req_poolp,
> - GFP_KERNEL | GFP_NOFS);
> + ret_buf = mempool_alloc(cifs_req_poolp, GFP_NOFS);
>
> /* clear the first few header bytes */
> /* for most paths, more is cleared in header_assemble */
> @@ -188,8 +187,7 @@ cifs_small_buf_get(void)
> but it may be more efficient to always alloc same size
> albeit slightly larger than necessary and maxbuffersize
> defaults to this and can not be bigger */
> - ret_buf = (struct smb_hdr *) mempool_alloc(cifs_sm_req_poolp,
> - GFP_KERNEL | GFP_NOFS);
> + ret_buf = mempool_alloc(cifs_sm_req_poolp, GFP_NOFS);
> if (ret_buf) {
> /* No need to clear memory here, cleared in header assemble */
> /* memset(ret_buf, 0, sizeof(struct smb_hdr) + 27);*/
> Index: 2.6-git/fs/cifs/transport.c
> ===================================================================
> --- 2.6-git.orig/fs/cifs/transport.c
> +++ 2.6-git/fs/cifs/transport.c
> @@ -50,8 +50,7 @@ AllocMidQEntry(const struct smb_hdr *smb
> return NULL;
> }
>
> - temp = (struct mid_q_entry *) mempool_alloc(cifs_mid_poolp,
> - GFP_KERNEL | GFP_NOFS);
> + temp = mempool_alloc(cifs_mid_poolp, GFP_NOFS);
> if (temp == NULL)
> return temp;
> else {
> _______________________________________________
> linux-cifs-client mailing list
> linux-cifs-client at lists.samba.org
> https://lists.samba.org/mailman/listinfo/linux-cifs-client
>
More information about the linux-cifs-client
mailing list