Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751579AbbDTQW5 (ORCPT ); Mon, 20 Apr 2015 12:22:57 -0400 Received: from mail-lb0-f182.google.com ([209.85.217.182]:34614 "EHLO mail-lb0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750703AbbDTQW4 (ORCPT ); Mon, 20 Apr 2015 12:22:56 -0400 From: Ricardo Ribalda Delgado To: Andrew Morton , Vivek Goyal , Bjorn Helgaas , Vinod Koul , Cliff Wickman , Jiang Liu , Jakub Sitnicki , Thierry Reding , Mike Travis , linux-kernel@vger.kernel.org Cc: Ricardo Ribalda Delgado Subject: [PATCH] kernel/resource: Invalid memory access in __release_resource Date: Mon, 20 Apr 2015 18:22:52 +0200 Message-Id: <1429546972-28400-1-git-send-email-ricardo.ribalda@gmail.com> X-Mailer: git-send-email 2.1.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1234 Lines: 40 When a resource is initialized via of_platform_populate. resource->parent is initialized to NULL via kzalloc. (of_platform_populate->of_device_alloc->of_address_to_resource) If of_platform_depopulate is called later, resource->parent is accessed (Offset 0x30 of address 0), causing a kernel error. This patch evaluates resouce->parent before accessing it. If it is not initialized, -EACCESS is returned. Fixes: BUG: unable to handle kernel NULL pointer deference at 0000000000000030 IP: release_resource+0x26/0x90 Signed-off-by: Ricardo Ribalda Delgado --- kernel/resource.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/resource.c b/kernel/resource.c index 90552aa..35dc716 100644 --- a/kernel/resource.c +++ b/kernel/resource.c @@ -237,6 +237,9 @@ static int __release_resource(struct resource *old) { struct resource *tmp, **p; + if (!old->parent) + return -EINVAL; + p = &old->parent->child; for (;;) { tmp = *p; -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/