From patchwork Wed Nov 27 10:51:05 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhouyi Zhou X-Patchwork-Id: 294559 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from ozlabs.org (localhost [IPv6:::1]) by ozlabs.org (Postfix) with ESMTP id C67EC2C03B6 for ; Wed, 27 Nov 2013 22:07:28 +1100 (EST) Received: from mail-pd0-x235.google.com (mail-pd0-x235.google.com [IPv6:2607:f8b0:400e:c02::235]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (not verified)) by ozlabs.org (Postfix) with ESMTPS id 740372C00A0 for ; Wed, 27 Nov 2013 21:51:22 +1100 (EST) Received: by mail-pd0-f181.google.com with SMTP id p10so9561210pdj.26 for ; Wed, 27 Nov 2013 02:51:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id; bh=WZ/vWgIukWes8pXMvWk74Tf9dmO1urjr6k5Hyrsb+9A=; b=jeqV9QKN36ezgEP6crlEH7mff7kzJUy6T+2u/OqkrfyBMpQpk5Zy5lofZzbYj86dsw w4xKnwP1vcFaA64DIxC9naZ7XxUtfx3o8ODU93QeppmXDiymAZX55wD5s/p105rLws+W Y5CoM6jyF6yFYQG1uGTi3lpV8DE/jSVU/cPr1oukoCwEVyJylqwiiyoMRRRoWh4jaJda s5EmagDFj+HbVzvnycjmi3iek2g6FW+3Rkg9fPSQylxArlOfQ37dpZlCYVE3iboIVHaK r3/zA0QTJdcszx0x+HhXmqU/KyoaQ4RdSHLWdErdpG6QDdCY1sk5b7MhXx0jE4AgLvwS jU4Q== X-Received: by 10.69.11.228 with SMTP id el4mr4430734pbd.8.1385549478241; Wed, 27 Nov 2013 02:51:18 -0800 (PST) Received: from localhost.localdomain ([159.226.43.61]) by mx.google.com with ESMTPSA id kd1sm98630284pab.20.2013.11.27.02.51.15 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 27 Nov 2013 02:51:17 -0800 (PST) From: Zhouyi Zhou To: Zhouyi Zhou , , , , , David Woodhouse , Joerg Roedel , Benjamin Herrenschmidt Subject: [PATCH 1/1] kernel code that do not handle NULL return of kmem_cache_zalloc Date: Wed, 27 Nov 2013 18:51:05 +0800 Message-Id: <1385549465-15945-1-git-send-email-yizhouzhou@ict.ac.cn> X-Mailer: git-send-email 1.7.10.4 X-Mailman-Approved-At: Wed, 27 Nov 2013 22:06:59 +1100 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" I do a grep for kmem_cache_zalloc and kmem_cache_alloc in kernel tree, and find some code do not handle NULL return of kmem_cache_zalloc correctly Signed-off-by: Zhouyi Zhou --- arch/powerpc/kvm/book3s_32_mmu_host.c | 5 +++++ drivers/iommu/omap-iommu.c | 3 ++- fs/jffs2/malloc.c | 4 ++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/arch/powerpc/kvm/book3s_32_mmu_host.c b/arch/powerpc/kvm/book3s_32_mmu_host.c index 3a0abd2..5fac89d 100644 --- a/arch/powerpc/kvm/book3s_32_mmu_host.c +++ b/arch/powerpc/kvm/book3s_32_mmu_host.c @@ -243,6 +243,11 @@ next_pteg: /* Now tell our Shadow PTE code about the new page */ pte = kvmppc_mmu_hpte_cache_next(vcpu); + if (!pte) { + kvm_release_pfn_clean(hpaddr >> PAGE_SHIFT); + r = -EAGAIN; + goto out; + } dprintk_mmu("KVM: %c%c Map 0x%llx: [%lx] 0x%llx (0x%llx) -> %lx\n", orig_pte->may_write ? 'w' : '-', diff --git a/drivers/iommu/omap-iommu.c b/drivers/iommu/omap-iommu.c index bcd78a7..5155714 100644 --- a/drivers/iommu/omap-iommu.c +++ b/drivers/iommu/omap-iommu.c @@ -551,7 +551,8 @@ static u32 *iopte_alloc(struct omap_iommu *obj, u32 *iopgd, u32 da) dev_vdbg(obj->dev, "%s: a new pte:%p\n", __func__, iopte); } else { /* We raced, free the reduniovant table */ - iopte_free(iopte); + if (iopte) + iopte_free(iopte); } pte_ready: diff --git a/fs/jffs2/malloc.c b/fs/jffs2/malloc.c index 4f47aa2..58e2336 100644 --- a/fs/jffs2/malloc.c +++ b/fs/jffs2/malloc.c @@ -287,6 +287,8 @@ struct jffs2_xattr_datum *jffs2_alloc_xattr_datum(void) { struct jffs2_xattr_datum *xd; xd = kmem_cache_zalloc(xattr_datum_cache, GFP_KERNEL); + if (!xd) + return NULL; dbg_memalloc("%p\n", xd); xd->class = RAWNODE_CLASS_XATTR_DATUM; @@ -305,6 +307,8 @@ struct jffs2_xattr_ref *jffs2_alloc_xattr_ref(void) { struct jffs2_xattr_ref *ref; ref = kmem_cache_zalloc(xattr_ref_cache, GFP_KERNEL); + if (!ref) + return NULL; dbg_memalloc("%p\n", ref); ref->class = RAWNODE_CLASS_XATTR_REF;