| From foo@baz Thu Dec 21 09:02:40 CET 2017 |
| From: Colin Ian King <colin.king@canonical.com> |
| Date: Fri, 8 Sep 2017 15:37:45 +0100 |
| Subject: IB/rxe: check for allocation failure on elem |
| |
| From: Colin Ian King <colin.king@canonical.com> |
| |
| |
| [ Upstream commit 4831ca9e4a8e48cb27e0a792f73250390827a228 ] |
| |
| The allocation for elem may fail (especially because we're using |
| GFP_ATOMIC) so best to check for a null return. This fixes a potential |
| null pointer dereference when assigning elem->pool. |
| |
| Detected by CoverityScan CID#1357507 ("Dereference null return value") |
| |
| Fixes: 8700e3e7c485 ("Soft RoCE driver") |
| Signed-off-by: Colin Ian King <colin.king@canonical.com> |
| Signed-off-by: Doug Ledford <dledford@redhat.com> |
| Signed-off-by: Sasha Levin <alexander.levin@verizon.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/infiniband/sw/rxe/rxe_pool.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| --- a/drivers/infiniband/sw/rxe/rxe_pool.c |
| +++ b/drivers/infiniband/sw/rxe/rxe_pool.c |
| @@ -412,6 +412,8 @@ void *rxe_alloc(struct rxe_pool *pool) |
| elem = kmem_cache_zalloc(pool_cache(pool), |
| (pool->flags & RXE_POOL_ATOMIC) ? |
| GFP_ATOMIC : GFP_KERNEL); |
| + if (!elem) |
| + return NULL; |
| |
| elem->pool = pool; |
| kref_init(&elem->ref_cnt); |