From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753797AbbJOPmj (ORCPT ); Thu, 15 Oct 2015 11:42:39 -0400 Received: from mail-yk0-f175.google.com ([209.85.160.175]:36274 "EHLO mail-yk0-f175.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753573AbbJOPmh (ORCPT ); Thu, 15 Oct 2015 11:42:37 -0400 From: Insu Yun To: rubini@gnudd.com, linux-kernel@vger.kernel.org Cc: taesoo@gatech.edu, yeongjin.jang@gatech.edu, insu@gatech.edu, Insu Yun Subject: [PATCH] fmc: correctly handle failed allocation Date: Thu, 15 Oct 2015 11:42:52 -0400 Message-Id: <1444923772-27625-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 kmemdup can be failed in memory pressure, return value should be checked and return -ENOMEM. Signed-off-by: Insu Yun --- drivers/fmc/fmc-fakedev.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/fmc/fmc-fakedev.c b/drivers/fmc/fmc-fakedev.c index 941d093..0515909 100644 --- a/drivers/fmc/fmc-fakedev.c +++ b/drivers/fmc/fmc-fakedev.c @@ -282,6 +282,8 @@ static struct ff_dev *ff_dev_create(void) for (i = 0; i < ff_nr_dev; i++) { fmc = kmemdup(&ff_template_fmc, sizeof(ff_template_fmc), GFP_KERNEL); + if (!fmc) + goto no_memory; fmc->hwdev = &ff->dev; fmc->carrier_data = ff; fmc->nr_slots = ff_nr_dev; @@ -294,6 +296,12 @@ static struct ff_dev *ff_dev_create(void) ff_template_fmc.device_id++; } return ff; + +no_memory: + for (i--; i >= 0; i--) + kfree(ff->fmc[i]); + kfree(ff); + return ERR_PTR(-ENOMEM); } /* init and exit */ -- 1.9.1