From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752925AbcLCRB2 (ORCPT ); Sat, 3 Dec 2016 12:01:28 -0500 Received: from mout.web.de ([212.227.17.12]:59649 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751241AbcLCRB1 (ORCPT ); Sat, 3 Dec 2016 12:01:27 -0500 Subject: [PATCH 1/2] ARM: mmp: Check return values from ioremap() and kstrdup() in sram_probe() To: linux-arm-kernel@lists.infradead.org, Eric Miao , Haojian Zhuang , Leo Yan , Russell King References: Cc: LKML , kernel-janitors@vger.kernel.org From: SF Markus Elfring Message-ID: Date: Sat, 3 Dec 2016 18:00:52 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:SJsrU/6AvTekK/Bj311DQStkNGxufvxS8pPVhYvfxyZPq8lmT6/ 9RNWCimXe0Va2gEcfjz0deeKvV1M6rfkRo3WBRhP7SQMQcdc4oj7rbZClJGXuNRrgIeEVuT jS0nmS4YYahhX/UMr2IzHj31WzNXgWQ2qlmFn6/QvCLpFbnvMdmzErg3rlfzCOq4oII0rge U23lkYepkZAgxCkl+GPqQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:M72h57vl0ws=:AuFlSLirHPI9Oz8WF1c2sr JXZrk6uIkv53ml/WkRtnUMBGkYNXYFdgfVrnzP1OPDnmmOK8R837jj1S8LvLHZUcwZvS3L2LX /rs8cKCT1wTr8taL45vv3taPifXluIGr3+/ozMMM39xKODSTzdieSvp4/iCEu2uTrzvcTVFRx kZ/y+LTG+vTtI+ZEpH0Eox6fZ/jQxiZKH8/8+DXzcxgRdCvQcg1MT2WVT5Ascyif3zTZDg61P 2XAt4G5+xKEahuNQ+7nJDUGrxd8BkmsetA9kW801goMieWclBgyHPPNDd9z/KG3mqnvRTkXoS rnszngi8ZCzw7ievK5cL1YArf2DNrTOqPQj1mtZfS84L/ik/VZmyOrb15yQ34PNty+CdF6zvs xH4gBhApgoF8+yj4W1fyJsISHspY92Heq0piZfdX5MplI+HdIxaM4EnuXbaGotohnQyOd3YjW wHlWMB266vmDR9ke7KZfNx2MdyMpp8kvOJJ21BvPcSXuDPwb+DehaGiLDArfvVAffo9gOXO49 ikumzvVLi9ZiFc7NEN/fIy596ha1lH9OLlCE7f3OrkwvYdBGhULfOVm6z4hsbCBeLVFIFPWib oazm06QXy78KNtWPrnmeLyMB0qBF8iucL05H5qCZ4qMFLwe6YztJmfTtQWCE4zOLGNB0Zaf3N kCHoptdAQVsrpFglYXr8cFhD1D0yrdW5eQf0s6S0fTKWGRWS3F4y0ZvUNG/SHKD6Q34XiMALo jZfJI5/cxfq5JNa4EVhIKh1bJUA2TzzjEflKnixDqP3Q5SwWPu0aVCjf9Mw240p/lG5tIs6XV +wsvPvs Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Markus Elfring Date: Sat, 3 Dec 2016 17:26:32 +0100 Two return values were not checked before their further use so far. This issue was detected by using the Coccinelle software. * Add a bit of exception handling. * Adjust tump targets. Fixes: 3c7241bd36e2a618fe20c91f6c69cc20f2d981f2 ("ARM: mmp: add sram allocator") Signed-off-by: Markus Elfring --- arch/arm/mach-mmp/sram.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/arch/arm/mach-mmp/sram.c b/arch/arm/mach-mmp/sram.c index bf5e64906e65..0fbfc2a42ab3 100644 --- a/arch/arm/mach-mmp/sram.c +++ b/arch/arm/mach-mmp/sram.c @@ -88,14 +88,24 @@ static int sram_probe(struct platform_device *pdev) info->sram_phys = (phys_addr_t)res->start; info->sram_size = resource_size(res); info->sram_virt = ioremap(info->sram_phys, info->sram_size); + if (!info->sram_virt) { + ret = -ENOMEM; + goto out; + } + info->pool_name = kstrdup(pdata->pool_name, GFP_KERNEL); + if (!info->pool_name) { + ret = -ENOMEM; + goto unmap_io; + } + info->granularity = pdata->granularity; info->gpool = gen_pool_create(ilog2(info->granularity), -1); if (!info->gpool) { dev_err(&pdev->dev, "create pool failed\n"); ret = -ENOMEM; - goto create_pool_err; + goto free_name; } ret = gen_pool_add_virt(info->gpool, (unsigned long)info->sram_virt, @@ -117,9 +127,10 @@ static int sram_probe(struct platform_device *pdev) add_chunk_err: gen_pool_destroy(info->gpool); -create_pool_err: - iounmap(info->sram_virt); +free_name: kfree(info->pool_name); +unmap_io: + iounmap(info->sram_virt); out: kfree(info); return ret; -- 2.11.0