| From e25df7812c91f62581301f9a7ac102acf92e4937 Mon Sep 17 00:00:00 2001 |
| From: "Gustavo A. R. Silva" <gustavo@embeddedor.com> |
| Date: Wed, 16 Jan 2019 10:46:16 -0600 |
| Subject: misc: ibmvsm: Fix potential NULL pointer dereference |
| |
| From: Gustavo A. R. Silva <gustavo@embeddedor.com> |
| |
| commit e25df7812c91f62581301f9a7ac102acf92e4937 upstream. |
| |
| There is a potential NULL pointer dereference in case kzalloc() |
| fails and returns NULL. |
| |
| Fix this by adding a NULL check on *session* |
| |
| Also, update the function header with information about the |
| expected return on failure and remove unnecessary variable rc. |
| |
| This issue was detected with the help of Coccinelle. |
| |
| Fixes: 0eca353e7ae7 ("misc: IBM Virtual Management Channel Driver (VMC)") |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/misc/ibmvmc.c | 7 +++++-- |
| 1 file changed, 5 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/misc/ibmvmc.c |
| +++ b/drivers/misc/ibmvmc.c |
| @@ -820,21 +820,24 @@ static int ibmvmc_send_msg(struct crq_se |
| * |
| * Return: |
| * 0 - Success |
| + * Non-zero - Failure |
| */ |
| static int ibmvmc_open(struct inode *inode, struct file *file) |
| { |
| struct ibmvmc_file_session *session; |
| - int rc = 0; |
| |
| pr_debug("%s: inode = 0x%lx, file = 0x%lx, state = 0x%x\n", __func__, |
| (unsigned long)inode, (unsigned long)file, |
| ibmvmc.state); |
| |
| session = kzalloc(sizeof(*session), GFP_KERNEL); |
| + if (!session) |
| + return -ENOMEM; |
| + |
| session->file = file; |
| file->private_data = session; |
| |
| - return rc; |
| + return 0; |
| } |
| |
| /** |