summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve French <sfrench@us.ibm.com>2005-10-11 20:03:18 -0700
committerSteve French <sfrench@us.ibm.com>2005-10-11 20:03:18 -0700
commit47c786e79b46ef478a1123cb57c711ecb481cbfa (patch)
tree915f408208c8930ccefff3ea8a137ec5fd395b22
parent1047abc159b4eb4ba4a7342a0969e16e9d4b4c69 (diff)
downloadlinux-47c786e79b46ef478a1123cb57c711ecb481cbfa.tar.gz
linux-47c786e79b46ef478a1123cb57c711ecb481cbfa.tar.bz2
linux-47c786e79b46ef478a1123cb57c711ecb481cbfa.zip
[CIFS] Add null malloc response check in notify experimental code
Signed-off-by: Steve French (sfrench@us.ibm.com)
-rw-r--r--fs/cifs/cifs_debug.c2
-rw-r--r--fs/cifs/cifssmb.c32
2 files changed, 20 insertions, 14 deletions
diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c
index f4054d695f81..22a444a3fe4c 100644
--- a/fs/cifs/cifs_debug.c
+++ b/fs/cifs/cifs_debug.c
@@ -217,7 +217,7 @@ cifs_stats_write(struct file *file, const char __user *buffer,
if (rc)
return rc;
- if (c == '1' || c == 'y' || c == 'Y') {
+ if (c == '1' || c == 'y' || c == 'Y' || c == '0') {
read_lock(&GlobalSMBSeslock);
list_for_each(tmp, &GlobalTreeConnectionList) {
tcon = list_entry(tmp, struct cifsTconInfo,
diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c
index 41996a240149..9312bfc56682 100644
--- a/fs/cifs/cifssmb.c
+++ b/fs/cifs/cifssmb.c
@@ -4294,20 +4294,26 @@ int CIFSSMBNotify(const int xid, struct cifsTconInfo *tcon,
cFYI(1, ("Error in Notify = %d", rc));
} else {
/* Add file to outstanding requests */
+ /* BB change to kmem cache alloc */
dnotify_req = (struct dir_notify_req *) kmalloc(
- sizeof(struct dir_notify_req), GFP_KERNEL);
- dnotify_req->Pid = pSMB->hdr.Pid;
- dnotify_req->PidHigh = pSMB->hdr.PidHigh;
- dnotify_req->Mid = pSMB->hdr.Mid;
- dnotify_req->Tid = pSMB->hdr.Tid;
- dnotify_req->Uid = pSMB->hdr.Uid;
- dnotify_req->netfid = netfid;
- dnotify_req->pfile = pfile;
- dnotify_req->filter = filter;
- dnotify_req->multishot = multishot;
- spin_lock(&GlobalMid_Lock);
- list_add_tail(&dnotify_req->lhead, &GlobalDnotifyReqList);
- spin_unlock(&GlobalMid_Lock);
+ sizeof(struct dir_notify_req),
+ GFP_KERNEL);
+ if(dnotify_req) {
+ dnotify_req->Pid = pSMB->hdr.Pid;
+ dnotify_req->PidHigh = pSMB->hdr.PidHigh;
+ dnotify_req->Mid = pSMB->hdr.Mid;
+ dnotify_req->Tid = pSMB->hdr.Tid;
+ dnotify_req->Uid = pSMB->hdr.Uid;
+ dnotify_req->netfid = netfid;
+ dnotify_req->pfile = pfile;
+ dnotify_req->filter = filter;
+ dnotify_req->multishot = multishot;
+ spin_lock(&GlobalMid_Lock);
+ list_add_tail(&dnotify_req->lhead,
+ &GlobalDnotifyReqList);
+ spin_unlock(&GlobalMid_Lock);
+ } else
+ rc = -ENOMEM;
}
cifs_buf_release(pSMB);
return rc;