Skip to content

Commit

Permalink
[CIFS] Reduce cifs stack space usage
Browse files Browse the repository at this point in the history
The two cifs functions that used the most stack according
to "make checkstack" have been changed to use less stack.

Thanks to jra and Shaggy for helpful ideas

Signed-off-by: Steve French <sfrench@us.ibm.com>
cc: jra@samba.org
cc: shaggy@us.ibm.com
  • Loading branch information
Steve French committed Feb 2, 2007
1 parent 030e9d8 commit 9a0c823
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 4 deletions.
12 changes: 9 additions & 3 deletions fs/cifs/file.c
Original file line number Diff line number Diff line change
Expand Up @@ -1146,7 +1146,7 @@ static int cifs_writepages(struct address_space *mapping,
pgoff_t end;
pgoff_t index;
int range_whole = 0;
struct kvec iov[32];
struct kvec * iov;
int len;
int n_iov = 0;
pgoff_t next;
Expand All @@ -1171,15 +1171,21 @@ static int cifs_writepages(struct address_space *mapping,
if((cifs_sb->tcon->ses) && (cifs_sb->tcon->ses->server))
if(cifs_sb->tcon->ses->server->secMode &
(SECMODE_SIGN_REQUIRED | SECMODE_SIGN_ENABLED))
if(!experimEnabled)
if(!experimEnabled)
return generic_writepages(mapping, wbc);

iov = kmalloc(32 * sizeof(struct kvec), GFP_KERNEL);
if(iov == NULL)
return generic_writepages(mapping, wbc);


/*
* BB: Is this meaningful for a non-block-device file system?
* If it is, we should test it again after we do I/O
*/
if (wbc->nonblocking && bdi_write_congested(bdi)) {
wbc->encountered_congestion = 1;
kfree(iov);
return 0;
}

Expand Down Expand Up @@ -1345,7 +1351,7 @@ static int cifs_writepages(struct address_space *mapping,
mapping->writeback_index = index;

FreeXid(xid);

kfree(iov);
return rc;
}

Expand Down
8 changes: 7 additions & 1 deletion fs/cifs/smbdes.c
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ dohash(char *out, char *in, char *key, int forw)
char c[28];
char d[28];
char *cd;
char ki[16][48];
char (*ki)[48];
char *pd1;
char l[32], r[32];
char *rl;
Expand All @@ -206,6 +206,10 @@ dohash(char *out, char *in, char *key, int forw)
if(pk1 == NULL)
return;

ki = kmalloc(16*48, GFP_KERNEL);
if(ki == NULL)
return;

cd = pk1 + 56;
pd1= cd + 56;
rl = pd1 + 64;
Expand Down Expand Up @@ -243,6 +247,7 @@ dohash(char *out, char *in, char *key, int forw)
er = kmalloc(48+48+32+32+32, GFP_KERNEL);
if(er == NULL) {
kfree(pk1);
kfree(ki);
return;
}
erk = er+48;
Expand Down Expand Up @@ -290,6 +295,7 @@ dohash(char *out, char *in, char *key, int forw)

permute(out, rl, perm6, 64);
kfree(pk1);
kfree(ki);
}

static void
Expand Down

0 comments on commit 9a0c823

Please sign in to comment.