[CIFS] Fix potential NULL pointer usage if kzalloc fails
Potential problem was noticed by Cyrill Gorcunov CC: Cyrill Gorcunov <gorcunov@gmail.com> Signed-off-by: Steve French <sfrench@us.ibm.com>
This commit is contained in:
@@ -209,13 +209,15 @@ cifs_debug_data_read(char *buf, char **beginBuffer, off_t offset,
|
|||||||
i++;
|
i++;
|
||||||
tcon = list_entry(tmp, struct cifsTconInfo, cifsConnectionList);
|
tcon = list_entry(tmp, struct cifsTconInfo, cifsConnectionList);
|
||||||
dev_type = le32_to_cpu(tcon->fsDevInfo.DeviceType);
|
dev_type = le32_to_cpu(tcon->fsDevInfo.DeviceType);
|
||||||
length =
|
length = sprintf(buf, "\n%d) %s Uses: %d ", i,
|
||||||
sprintf(buf,
|
tcon->treeName, atomic_read(&tcon->useCount));
|
||||||
"\n%d) %s Uses: %d Type: %s DevInfo: 0x%x "
|
buf += length;
|
||||||
"Attributes: 0x%x\nPathComponentMax: %d Status: %d",
|
if (tcon->nativeFileSystem) {
|
||||||
i, tcon->treeName,
|
length = sprintf("Type: %s ", tcon->nativeFileSystem);
|
||||||
atomic_read(&tcon->useCount),
|
buf += length;
|
||||||
tcon->nativeFileSystem,
|
}
|
||||||
|
length = sprintf(buf, "DevInfo: 0x%x Attributes: 0x%x"
|
||||||
|
"\nPathComponentMax: %d Status: %d",
|
||||||
le32_to_cpu(tcon->fsDevInfo.DeviceCharacteristics),
|
le32_to_cpu(tcon->fsDevInfo.DeviceCharacteristics),
|
||||||
le32_to_cpu(tcon->fsAttrInfo.Attributes),
|
le32_to_cpu(tcon->fsAttrInfo.Attributes),
|
||||||
le32_to_cpu(tcon->fsAttrInfo.MaxPathNameComponentLength),
|
le32_to_cpu(tcon->fsAttrInfo.MaxPathNameComponentLength),
|
||||||
|
@@ -3386,9 +3386,11 @@ CIFSTCon(unsigned int xid, struct cifsSesInfo *ses,
|
|||||||
kfree(tcon->nativeFileSystem);
|
kfree(tcon->nativeFileSystem);
|
||||||
tcon->nativeFileSystem =
|
tcon->nativeFileSystem =
|
||||||
kzalloc(length + 2, GFP_KERNEL);
|
kzalloc(length + 2, GFP_KERNEL);
|
||||||
cifs_strfromUCS_le(tcon->nativeFileSystem,
|
if (tcon->nativeFileSystem)
|
||||||
(__le16 *) bcc_ptr,
|
cifs_strfromUCS_le(
|
||||||
length, nls_codepage);
|
tcon->nativeFileSystem,
|
||||||
|
(__le16 *) bcc_ptr,
|
||||||
|
length, nls_codepage);
|
||||||
bcc_ptr += 2 * length;
|
bcc_ptr += 2 * length;
|
||||||
bcc_ptr[0] = 0; /* null terminate the string */
|
bcc_ptr[0] = 0; /* null terminate the string */
|
||||||
bcc_ptr[1] = 0;
|
bcc_ptr[1] = 0;
|
||||||
@@ -3403,8 +3405,9 @@ CIFSTCon(unsigned int xid, struct cifsSesInfo *ses,
|
|||||||
kfree(tcon->nativeFileSystem);
|
kfree(tcon->nativeFileSystem);
|
||||||
tcon->nativeFileSystem =
|
tcon->nativeFileSystem =
|
||||||
kzalloc(length + 1, GFP_KERNEL);
|
kzalloc(length + 1, GFP_KERNEL);
|
||||||
strncpy(tcon->nativeFileSystem, bcc_ptr,
|
if (tcon->nativeFileSystem)
|
||||||
length);
|
strncpy(tcon->nativeFileSystem, bcc_ptr,
|
||||||
|
length);
|
||||||
}
|
}
|
||||||
/* else do not bother copying these information fields*/
|
/* else do not bother copying these information fields*/
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user