提交 4a6d87f1 编写于 作者: S Steve French

[CIFS] Add missing check for path name allocation failure. Remove four

redundant null pointer checks before cifs_buf_release.

Found by coverity analyzer.

Signed-off-by: Steve French (sfrench@us.ibm.com)
上级 a47fd3f5
...@@ -415,15 +415,16 @@ CIFSSMBNegotiate(unsigned int xid, struct cifsSesInfo *ses) ...@@ -415,15 +415,16 @@ CIFSSMBNegotiate(unsigned int xid, struct cifsSesInfo *ses)
if(server->secMode & SECMODE_SIGN_REQUIRED) if(server->secMode & SECMODE_SIGN_REQUIRED)
cERROR(1, cERROR(1,
("Server requires /proc/fs/cifs/PacketSigningEnabled")); ("Server requires /proc/fs/cifs/PacketSigningEnabled"));
server->secMode &= ~(SECMODE_SIGN_ENABLED | SECMODE_SIGN_REQUIRED); server->secMode &= ~(SECMODE_SIGN_ENABLED |
SECMODE_SIGN_REQUIRED);
} else if(sign_CIFS_PDUs == 1) { } else if(sign_CIFS_PDUs == 1) {
if((server->secMode & SECMODE_SIGN_REQUIRED) == 0) if((server->secMode & SECMODE_SIGN_REQUIRED) == 0)
server->secMode &= ~(SECMODE_SIGN_ENABLED | SECMODE_SIGN_REQUIRED); server->secMode &= ~(SECMODE_SIGN_ENABLED |
SECMODE_SIGN_REQUIRED);
} }
} }
if (pSMB) cifs_buf_release(pSMB);
cifs_buf_release(pSMB);
return rc; return rc;
} }
...@@ -537,9 +538,8 @@ CIFSSMBLogoff(const int xid, struct cifsSesInfo *ses) ...@@ -537,9 +538,8 @@ CIFSSMBLogoff(const int xid, struct cifsSesInfo *ses)
rc = -ESHUTDOWN; rc = -ESHUTDOWN;
} }
} }
if (pSMB) up(&ses->sesSem)
cifs_small_buf_release(pSMB); cifs_small_buf_release(pSMB);
up(&ses->sesSem);
/* if session dead then we do not need to do ulogoff, /* if session dead then we do not need to do ulogoff,
since server closed smb session, no sense reporting since server closed smb session, no sense reporting
...@@ -1796,8 +1796,7 @@ CIFSSMBQueryReparseLinkInfo(const int xid, struct cifsTconInfo *tcon, ...@@ -1796,8 +1796,7 @@ CIFSSMBQueryReparseLinkInfo(const int xid, struct cifsTconInfo *tcon,
} }
} }
qreparse_out: qreparse_out:
if (pSMB) cifs_buf_release(pSMB);
cifs_buf_release(pSMB);
/* Note: On -EAGAIN error only caller can retry on handle based calls /* Note: On -EAGAIN error only caller can retry on handle based calls
since file handle passed in no longer valid */ since file handle passed in no longer valid */
...@@ -2520,12 +2519,11 @@ CIFSFindFirst(const int xid, struct cifsTconInfo *tcon, ...@@ -2520,12 +2519,11 @@ CIFSFindFirst(const int xid, struct cifsTconInfo *tcon,
rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
(struct smb_hdr *) pSMBr, &bytes_returned, 0); (struct smb_hdr *) pSMBr, &bytes_returned, 0);
if (rc) {/* BB add logic to retry regular search if Unix search rejected unexpectedly by server */ if (rc) {/* BB add logic to retry regular search if Unix search
rejected unexpectedly by server */
/* BB Add code to handle unsupported level rc */ /* BB Add code to handle unsupported level rc */
cFYI(1, ("Error in FindFirst = %d", rc)); cFYI(1, ("Error in FindFirst = %d", rc));
cifs_buf_release(pSMB);
if (pSMB)
cifs_buf_release(pSMB);
/* BB eventually could optimize out free and realloc of buf */ /* BB eventually could optimize out free and realloc of buf */
/* for this case */ /* for this case */
......
...@@ -226,7 +226,8 @@ cifs_create(struct inode *inode, struct dentry *direntry, int mode, ...@@ -226,7 +226,8 @@ cifs_create(struct inode *inode, struct dentry *direntry, int mode,
} }
if (rc != 0) { if (rc != 0) {
cFYI(1,("Create worked but get_inode_info failed with rc = %d", cFYI(1,
("Create worked but get_inode_info failed rc = %d",
rc)); rc));
} else { } else {
direntry->d_op = &cifs_dentry_ops; direntry->d_op = &cifs_dentry_ops;
...@@ -303,8 +304,7 @@ int cifs_mknod(struct inode *inode, struct dentry *direntry, int mode, dev_t dev ...@@ -303,8 +304,7 @@ int cifs_mknod(struct inode *inode, struct dentry *direntry, int mode, dev_t dev
up(&direntry->d_sb->s_vfs_rename_sem); up(&direntry->d_sb->s_vfs_rename_sem);
if(full_path == NULL) if(full_path == NULL)
rc = -ENOMEM; rc = -ENOMEM;
else if (pTcon->ses->capabilities & CAP_UNIX) {
if (full_path && (pTcon->ses->capabilities & CAP_UNIX)) {
if(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SET_UID) { if(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SET_UID) {
rc = CIFSSMBUnixSetPerms(xid, pTcon, full_path, rc = CIFSSMBUnixSetPerms(xid, pTcon, full_path,
mode,(__u64)current->euid,(__u64)current->egid, mode,(__u64)current->euid,(__u64)current->egid,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册