From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752088AbbJQTYA (ORCPT ); Sat, 17 Oct 2015 15:24:00 -0400 Received: from mail-yk0-f181.google.com ([209.85.160.181]:36590 "EHLO mail-yk0-f181.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751105AbbJQTX6 (ORCPT ); Sat, 17 Oct 2015 15:23:58 -0400 From: Insu Yun To: sre@kernel.org, linux-kernel@vger.kernel.org Cc: taesoo@gatech.edu, yeongjin.jang@gatech.edu, insu@gatech.edu, Insu Yun Subject: [PATCH] hsi: correctly handle return value of kzalloc Date: Sat, 17 Oct 2015 19:25:07 +0000 Message-Id: <1445109907-8176-1-git-send-email-wuninsu@gmail.com> X-Mailer: git-send-email 1.9.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Since kzalloc can be failed in memory pressure, its return value should be checked and handled. Signed-off-by: Insu Yun --- drivers/hsi/hsi.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/hsi/hsi.c b/drivers/hsi/hsi.c index fe93712..bda4c26 100644 --- a/drivers/hsi/hsi.c +++ b/drivers/hsi/hsi.c @@ -85,12 +85,14 @@ struct hsi_client *hsi_new_client(struct hsi_port *port, cl = kzalloc(sizeof(*cl), GFP_KERNEL); if (!cl) - return NULL; + goto err; cl->tx_cfg = info->tx_cfg; if (cl->tx_cfg.channels) { size = cl->tx_cfg.num_channels * sizeof(*cl->tx_cfg.channels); cl->tx_cfg.channels = kzalloc(size , GFP_KERNEL); + if (!cl->tx_cfg.channels) + goto err_tx; memcpy(cl->tx_cfg.channels, info->tx_cfg.channels, size); } @@ -98,6 +100,8 @@ struct hsi_client *hsi_new_client(struct hsi_port *port, if (cl->rx_cfg.channels) { size = cl->rx_cfg.num_channels * sizeof(*cl->rx_cfg.channels); cl->rx_cfg.channels = kzalloc(size , GFP_KERNEL); + if (!cl->rx_cfg.channels) + goto err_rx; memcpy(cl->rx_cfg.channels, info->rx_cfg.channels, size); } @@ -114,6 +118,12 @@ struct hsi_client *hsi_new_client(struct hsi_port *port, } return cl; +err_rx: + kfree(cl->tx_cfg.channels); +err_tx: + kfree(cl); +err: + return NULL; } EXPORT_SYMBOL_GPL(hsi_new_client); -- 1.9.1