cifs: don't use GFP_KERNEL with GFP_NOFS
authorPekka Enberg <penberg@cs.helsinki.fi>
Mon, 15 Sep 2008 10:22:54 +0000 (13:22 +0300)
committerSteve French <sfrench@us.ibm.com>
Mon, 22 Sep 2008 22:23:56 +0000 (22:23 +0000)
GFP_KERNEL and GFP_NOFS are mutually exclusive. If you combine them, you end up
with plain GFP_KERNEL which can deadlock in cases where you really want
GFP_NOFS.

Cc: Steve French <sfrench@samba.org>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: Steve French <sfrench@us.ibm.com>
fs/cifs/misc.c
fs/cifs/transport.c

index 4b17f8fe3157da5ac3b605cb1d4d3b047f0b3cbe..654d972a88f4022f9ec7d60a7277e21201b5bfb0 100644 (file)
@@ -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 e286db9f5ee2c66d34b0c3c4deedf851b18b7687..bf0e6d8e382a6a4286a61dc748bd73ef4810e48b 100644 (file)
@@ -50,8 +50,7 @@ AllocMidQEntry(const struct smb_hdr *smb_buffer, struct cifsSesInfo *ses)
                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 {