From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S941735AbdAGTxX (ORCPT ); Sat, 7 Jan 2017 14:53:23 -0500 Received: from mout.web.de ([212.227.15.4]:63213 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754168AbdAGTxM (ORCPT ); Sat, 7 Jan 2017 14:53:12 -0500 Subject: [PATCH 1/9] memstick: Split a condition check in msb_ftl_initialize() To: Maxim Levitsky , kernel-janitors@vger.kernel.org References: <64dfa775-4e4a-bdb0-7b55-41f43ccdf11a@users.sourceforge.net> Cc: LKML From: SF Markus Elfring Message-ID: Date: Sat, 7 Jan 2017 20:53:02 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: <64dfa775-4e4a-bdb0-7b55-41f43ccdf11a@users.sourceforge.net> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:c3tTAYDU0N3DPLM8Y5nLgoWJd7tN2Cs/yT0gtBx/Y3XkHJqbCLW 3t1owRa1OqRgKzxBLCB+BBSjWdzQ43mUdatdmfVvB4JB1oJJCRFeb0oS9CyNl2TPOytPy6Y T4SMoI31Vf2WofVr5qnwvgc+egFvf1z8znHOi/SG/I/DDo5Eln1okp5vZDLN+zoScUD2rRa mnYI4hNc8nm4WDJTuAhDw== X-UI-Out-Filterresults: notjunk:1;V01:K0:A5mEdUtq7KI=:80k+Nn/dfVGPIOu5CKTVPF 1CuRAeajMQyzSyyUwbsfiAMzyqiGlQ/bZSS68YFI1J0V8pf4Ur07u3kdWSU1ewfOS3/CeJ7Ky dBYm1QZePlHcqGNtZtxWVqU3pLh7Jb3SxFUoHamQmsaxx1axXUyIPPUI2pVBnna/m8k+y0IeW Gt97gImR9wiKcbv7OOWa4gZO6ZjiTStxAQrv9/ZCpULEcGMbKFqG6bPO75dZKTxfflrhazGoH DygBLUA7+YuLNaMnzPSPyML1en0ikQVHqqy/FXvDVOSBz/pWYk8Lh2VMGk7+nTPvzj1pgavAD A12E3CgDzIKco8KF6y56xlR2XwMiGUN7ubtsfnkj3WOODeBYeInHd3uuFJfCV1x1++EoZKTy5 BrBtXukgXEvyOw9lojgf4rG9uudM3JloRqVQf1yuGrOzqmWX2bS01OBn2s3CY0lpuS8fqXk3a 0vnXa08ysKYCiJjVPWDv0EAUqsf3md3nuJelP4N4x81WA3Y09iG/kylqomcGtHQ+84vDA9HOJ TrX9kq+x/0Fn8uX7mrE95h+k44EOdXtXYbxQ+DITK+oPipTu9+b/0uYqZcunBCOffos5nd1hi 3eQ3wAHzQ0M/W59fX03hAtd9tByIL//CvxLEe8gDUBprQvD5HP8gHEM9asUKdwyHVzLu7Puxj 7VsnOfNxyDvxyRqAKzndgm6wGIq0jLC+uKt3m+tVfQTGa1dIU2DJQvcZuvRVhZ9rIVU+mZvO9 0HD7FznEntjO3OSwQg69CuBYaE1EGQLSeRmbKcM11oagklS7qiN8D1FbideHmzJxqHEhpNX5T 2nrEOM1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Markus Elfring Date: Sat, 7 Jan 2017 08:43:50 +0100 The functions "kmalloc" and "kzalloc" were called in two cases by the function "msb_ftl_initialize" without checking immediately if they succeded. This issue was detected by using the Coccinelle software. Split a condition check for memory allocation failures so that the corresponding exception handling will be improved a bit. Signed-off-by: Markus Elfring --- drivers/memstick/core/ms_block.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/drivers/memstick/core/ms_block.c b/drivers/memstick/core/ms_block.c index f3512404bc52..fd8b1697a5a2 100644 --- a/drivers/memstick/core/ms_block.c +++ b/drivers/memstick/core/ms_block.c @@ -1339,17 +1339,17 @@ static int msb_ftl_initialize(struct msb_data *msb) msb->logical_block_count = msb->zone_count * 496 - 2; msb->used_blocks_bitmap = kzalloc(msb->block_count / 8, GFP_KERNEL); + if (!msb->used_blocks_bitmap) + return -ENOMEM; + msb->erased_blocks_bitmap = kzalloc(msb->block_count / 8, GFP_KERNEL); + if (!msb->erased_blocks_bitmap) + goto free_used_bitmap; + msb->lba_to_pba_table = kmalloc(msb->logical_block_count * sizeof(u16), GFP_KERNEL); - - if (!msb->used_blocks_bitmap || !msb->lba_to_pba_table || - !msb->erased_blocks_bitmap) { - kfree(msb->used_blocks_bitmap); - kfree(msb->lba_to_pba_table); - kfree(msb->erased_blocks_bitmap); - return -ENOMEM; - } + if (!msb->lba_to_pba_table) + goto free_erased_bitmap; for (i = 0; i < msb->zone_count; i++) msb->free_block_count[i] = MS_BLOCKS_IN_ZONE; @@ -1362,6 +1362,11 @@ static int msb_ftl_initialize(struct msb_data *msb) msb->ftl_initialized = true; return 0; +free_erased_bitmap: + kfree(msb->erased_blocks_bitmap); +free_used_bitmap: + kfree(msb->used_blocks_bitmap); + return -ENOMEM; } static int msb_ftl_scan(struct msb_data *msb) -- 2.11.0