summaryrefslogtreecommitdiffstats
path: root/drivers/thunderbolt/property.c
diff options
context:
space:
mode:
authorKangjie Lu <kjlu@umn.edu>2019-03-14 07:55:31 +0100
committerMika Westerberg <mika.westerberg@linux.intel.com>2019-03-20 11:37:12 +0100
commite4dfdd5804cce1255f99c5dd033526a18135a616 (patch)
treef3afb48c0ef326d5511ac23dba4b25cbf9fd5a25 /drivers/thunderbolt/property.c
parentthunderbolt: property: Fix a NULL pointer dereference (diff)
downloadlinux-e4dfdd5804cce1255f99c5dd033526a18135a616.tar.xz
linux-e4dfdd5804cce1255f99c5dd033526a18135a616.zip
thunderbolt: Fix a missing check of kmemdup
kmemdup may fail and return NULL. The fix adds a check and returns NULL in case it fails to avoid NULL pointer dereferecen. Signed-off-by: Kangjie Lu <kjlu@umn.edu> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Diffstat (limited to 'drivers/thunderbolt/property.c')
-rw-r--r--drivers/thunderbolt/property.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/thunderbolt/property.c b/drivers/thunderbolt/property.c
index ee76449524a3..841314deb446 100644
--- a/drivers/thunderbolt/property.c
+++ b/drivers/thunderbolt/property.c
@@ -176,6 +176,10 @@ static struct tb_property_dir *__tb_property_parse_dir(const u32 *block,
} else {
dir->uuid = kmemdup(&block[dir_offset], sizeof(*dir->uuid),
GFP_KERNEL);
+ if (!dir->uuid) {
+ tb_property_free_dir(dir);
+ return NULL;
+ }
content_offset = dir_offset + 4;
content_len = dir_len - 4; /* Length includes UUID */
}