RDMA/iwpm: fix memory leak on map_info
In the cases where iwpm_hash_bucket is NULL and where function
get_mapinfo_hash_bucket returns NULL then the map_info is never added
to hash_bucket_head and hence there is a leak of map_info. Fix this
by nullifying hash_bucket_head and if that is null we know that
that map_info was not added to hash_bucket_head and hence map_info
should be free'd.
Detected by CoverityScan, CID#1222481 ("Resource Leak")
Fixes: 30dc5e63d6
("RDMA/core: Add support for iWARP Port Mapper user space service")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
Родитель
47a3968a98
Коммит
f96416cea7
|
@ -114,7 +114,7 @@ int iwpm_create_mapinfo(struct sockaddr_storage *local_sockaddr,
|
||||||
struct sockaddr_storage *mapped_sockaddr,
|
struct sockaddr_storage *mapped_sockaddr,
|
||||||
u8 nl_client)
|
u8 nl_client)
|
||||||
{
|
{
|
||||||
struct hlist_head *hash_bucket_head;
|
struct hlist_head *hash_bucket_head = NULL;
|
||||||
struct iwpm_mapping_info *map_info;
|
struct iwpm_mapping_info *map_info;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
int ret = -EINVAL;
|
int ret = -EINVAL;
|
||||||
|
@ -142,6 +142,9 @@ int iwpm_create_mapinfo(struct sockaddr_storage *local_sockaddr,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
spin_unlock_irqrestore(&iwpm_mapinfo_lock, flags);
|
spin_unlock_irqrestore(&iwpm_mapinfo_lock, flags);
|
||||||
|
|
||||||
|
if (!hash_bucket_head)
|
||||||
|
kfree(map_info);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче