diff options
Diffstat (limited to 'fs/cifs/misc.c')
| -rw-r--r-- | fs/cifs/misc.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c index 94baf6c8ecbd..812c6bb0fe38 100644 --- a/fs/cifs/misc.c +++ b/fs/cifs/misc.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * fs/cifs/misc.c | 2 | * fs/cifs/misc.c |
| 3 | * | 3 | * |
| 4 | * Copyright (C) International Business Machines Corp., 2002,2004 | 4 | * Copyright (C) International Business Machines Corp., 2002,2005 |
| 5 | * Author(s): Steve French (sfrench@us.ibm.com) | 5 | * Author(s): Steve French (sfrench@us.ibm.com) |
| 6 | * | 6 | * |
| 7 | * This library is free software; you can redistribute it and/or modify | 7 | * This library is free software; you can redistribute it and/or modify |
| @@ -161,6 +161,9 @@ cifs_buf_get(void) | |||
| 161 | if (ret_buf) { | 161 | if (ret_buf) { |
| 162 | memset(ret_buf, 0, sizeof(struct smb_hdr) + 3); | 162 | memset(ret_buf, 0, sizeof(struct smb_hdr) + 3); |
| 163 | atomic_inc(&bufAllocCount); | 163 | atomic_inc(&bufAllocCount); |
| 164 | #ifdef CONFIG_CIFS_STATS2 | ||
| 165 | atomic_inc(&totBufAllocCount); | ||
| 166 | #endif /* CONFIG_CIFS_STATS2 */ | ||
| 164 | } | 167 | } |
| 165 | 168 | ||
| 166 | return ret_buf; | 169 | return ret_buf; |
| @@ -195,6 +198,10 @@ cifs_small_buf_get(void) | |||
| 195 | /* No need to clear memory here, cleared in header assemble */ | 198 | /* No need to clear memory here, cleared in header assemble */ |
| 196 | /* memset(ret_buf, 0, sizeof(struct smb_hdr) + 27);*/ | 199 | /* memset(ret_buf, 0, sizeof(struct smb_hdr) + 27);*/ |
| 197 | atomic_inc(&smBufAllocCount); | 200 | atomic_inc(&smBufAllocCount); |
| 201 | #ifdef CONFIG_CIFS_STATS2 | ||
| 202 | atomic_inc(&totSmBufAllocCount); | ||
| 203 | #endif /* CONFIG_CIFS_STATS2 */ | ||
| 204 | |||
| 198 | } | 205 | } |
| 199 | return ret_buf; | 206 | return ret_buf; |
| 200 | } | 207 | } |
| @@ -292,7 +299,7 @@ header_assemble(struct smb_hdr *buffer, char smb_command /* command */ , | |||
| 292 | struct cifsSesInfo * ses; | 299 | struct cifsSesInfo * ses; |
| 293 | char *temp = (char *) buffer; | 300 | char *temp = (char *) buffer; |
| 294 | 301 | ||
| 295 | memset(temp,0,MAX_CIFS_HDR_SIZE); | 302 | memset(temp,0,256); /* bigger than MAX_CIFS_HDR_SIZE */ |
| 296 | 303 | ||
| 297 | buffer->smb_buf_length = | 304 | buffer->smb_buf_length = |
| 298 | (2 * word_count) + sizeof (struct smb_hdr) - | 305 | (2 * word_count) + sizeof (struct smb_hdr) - |
| @@ -348,12 +355,12 @@ header_assemble(struct smb_hdr *buffer, char smb_command /* command */ , | |||
| 348 | /* BB Add support for establishing new tCon and SMB Session */ | 355 | /* BB Add support for establishing new tCon and SMB Session */ |
| 349 | /* with userid/password pairs found on the smb session */ | 356 | /* with userid/password pairs found on the smb session */ |
| 350 | /* for other target tcp/ip addresses BB */ | 357 | /* for other target tcp/ip addresses BB */ |
| 351 | if(current->uid != treeCon->ses->linux_uid) { | 358 | if(current->fsuid != treeCon->ses->linux_uid) { |
| 352 | cFYI(1,("Multiuser mode and UID did not match tcon uid ")); | 359 | cFYI(1,("Multiuser mode and UID did not match tcon uid")); |
| 353 | read_lock(&GlobalSMBSeslock); | 360 | read_lock(&GlobalSMBSeslock); |
| 354 | list_for_each(temp_item, &GlobalSMBSessionList) { | 361 | list_for_each(temp_item, &GlobalSMBSessionList) { |
| 355 | ses = list_entry(temp_item, struct cifsSesInfo, cifsSessionList); | 362 | ses = list_entry(temp_item, struct cifsSesInfo, cifsSessionList); |
| 356 | if(ses->linux_uid == current->uid) { | 363 | if(ses->linux_uid == current->fsuid) { |
| 357 | if(ses->server == treeCon->ses->server) { | 364 | if(ses->server == treeCon->ses->server) { |
| 358 | cFYI(1,("found matching uid substitute right smb_uid")); | 365 | cFYI(1,("found matching uid substitute right smb_uid")); |
| 359 | buffer->Uid = ses->Suid; | 366 | buffer->Uid = ses->Suid; |
