[PATCH] CIFS: fix cifs_user_read oops when null SMB response on forcedirectio mount
This patch fixes an oops reported by Adrian Bunk in cifs_user_read when a null read response is returned on a forcedirectio mount. Signed-off-by: Dave Kleikamp <shaggy@austin.ibm.com> Signed-off-by: Steve French <sfrench@us.ibm.com> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
10ee39fe3f
commit
93544cc648
|
@ -1442,13 +1442,15 @@ ssize_t cifs_user_read(struct file *file, char __user *read_data,
|
||||||
&bytes_read, &smb_read_data,
|
&bytes_read, &smb_read_data,
|
||||||
&buf_type);
|
&buf_type);
|
||||||
pSMBr = (struct smb_com_read_rsp *)smb_read_data;
|
pSMBr = (struct smb_com_read_rsp *)smb_read_data;
|
||||||
if (copy_to_user(current_offset,
|
|
||||||
smb_read_data + 4 /* RFC1001 hdr */
|
|
||||||
+ le16_to_cpu(pSMBr->DataOffset),
|
|
||||||
bytes_read)) {
|
|
||||||
rc = -EFAULT;
|
|
||||||
}
|
|
||||||
if (smb_read_data) {
|
if (smb_read_data) {
|
||||||
|
if (copy_to_user(current_offset,
|
||||||
|
smb_read_data +
|
||||||
|
4 /* RFC1001 length field */ +
|
||||||
|
le16_to_cpu(pSMBr->DataOffset),
|
||||||
|
bytes_read)) {
|
||||||
|
rc = -EFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
if(buf_type == CIFS_SMALL_BUFFER)
|
if(buf_type == CIFS_SMALL_BUFFER)
|
||||||
cifs_small_buf_release(smb_read_data);
|
cifs_small_buf_release(smb_read_data);
|
||||||
else if(buf_type == CIFS_LARGE_BUFFER)
|
else if(buf_type == CIFS_LARGE_BUFFER)
|
||||||
|
|
Loading…
Reference in New Issue