Received: by 10.192.165.156 with SMTP id m28csp83572imm; Tue, 17 Apr 2018 06:57:30 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+ebS828cISuSGEiisgx6w+L7bhXNaPLszV/EnZW92dnop3bGVJmFL4zRLXkA6HXdePxbN6 X-Received: by 10.99.36.7 with SMTP id k7mr1890888pgk.63.1523973450662; Tue, 17 Apr 2018 06:57:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523973450; cv=none; d=google.com; s=arc-20160816; b=CpUIoqs5H3p1/b8ce1nnv9cGowyCIfqiBNBZQlHoiQXJ8njvCjlOIvwJ/3qu5rsat7 DoqtJEBEosPHDVAvcI3lfOqIkWw+pvth7/Q8ix0xsHIvkezcHWkXswm7zGPJHKf1+nn7 elQhl2nZQV/drNX/JfX0CMs/1zrqYcUn/39G4+nFhRyqJUbZycSfv4F6pEFWL6BgjxNa Oy+3F+VLPniJ2g3CkZSpasBazbkwjuPARUKJgD+FbtGJpu5LamCSGR1FPhXpOu37/Q3i Q6govKXXhfHcS52hbkroXlqkb6bkytbWlCzj0Snchl+cCfepjR5uBYLYwaLXYkv/OJQx KrzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :organization:references:in-reply-to:message-id:subject:cc:to:from :date:arc-authentication-results; bh=tOmyQgIIRm1a2aE/sjJDMgzi3sGjDv3eOkeuw2vBY+8=; b=ZfHo8cYVIKsSrHjD2kSbKHtPlrccTz6OPmhJ5OkBS5b7EAvPEkv8rk4FL+qhCHnJdD s2S7W4XM5S4ZwPEBetxsnsfy4DWZdKypE7vVRAKy2ukLcphtlTOQPXiGNWYKmARZsVS1 aDAs+h1HxXZIevmAFz4jHyVLIXkOxvXw5zbq+Ph+Tb1kgd02Bo/CUFr0VzR4iWZO+yqz jC2BI63r99Z52gyks1cns70kEbvIRp+VsqGh6v5qtSWycp2TDuM25JDQT60aDyugwJSy suiP3O23E/VOheftO6GtMJneWxTo50uKXWiLsaJTXLA+FZgANvVtQlWuCI6TWDb1gxvr AKQQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 1-v6si13808963plz.279.2018.04.17.06.57.16; Tue, 17 Apr 2018 06:57:30 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753909AbeDQNyZ (ORCPT + 99 others); Tue, 17 Apr 2018 09:54:25 -0400 Received: from mail.bootlin.com ([62.4.15.54]:60584 "EHLO mail.bootlin.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753392AbeDQNyX (ORCPT ); Tue, 17 Apr 2018 09:54:23 -0400 Received: by mail.bootlin.com (Postfix, from userid 110) id 131EB2064B; Tue, 17 Apr 2018 15:54:22 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mail.bootlin.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT shortcircuit=ham autolearn=disabled version=3.4.0 Received: from windsurf.numericable.fr (unknown [37.173.13.243]) by mail.bootlin.com (Postfix) with ESMTPSA id 66B4D20703; Tue, 17 Apr 2018 15:54:11 +0200 (CEST) Date: Tue, 17 Apr 2018 15:54:07 +0200 From: Thomas Petazzoni To: Jacopo Mondi Cc: ysato@users.sourceforge.jp, dalias@libc.org, thomas.petazzoni@free-electrons.com, robin.murphy@arm.com, geert@linux-m68k.org, linux-renesas-soc@vger.kernel.org, linux-sh@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] sh: mm: Fix unprotected access to struct device Message-ID: <20180417155407.49c981b3@windsurf.numericable.fr> In-Reply-To: <1523972123-5700-1-git-send-email-jacopo+renesas@jmondi.org> References: <1523972123-5700-1-git-send-email-jacopo+renesas@jmondi.org> Organization: Bootlin (formerly Free Electrons) X-Mailer: Claws Mail 3.15.1-dirty (GTK+ 2.24.32; x86_64-redhat-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello, On Tue, 17 Apr 2018 15:35:23 +0200, Jacopo Mondi wrote: > With commit ce88313069c36eef80f21fd7 ("arch/sh: make the DMA mapping > operations observe dev->dma_pfn_offset") the generic DMA allocation > function on which the SH 'dma_alloc_coherent()' function relies on, > access the 'dma_pfn_offset' field of struct device. > > Unfortunately the 'dma_generic_alloc_coherent()' function is called from > several places with a NULL struct device argument, halting the CPU > during the boot process. > > This patch fixes the issue protecting access to dev->dma_pfn_offset, > with a trivial check for validity. It also passes a valid 'struct device' > in the 'platform_resource_setup_memory' function which is the main user > of 'dma_alloc_coherent()', and inserting a WARN_ON() check to make future > (and existing) bogus users of this function they're should provide a valid > 'struct device' whenever possible. > > Fixes: ce88313069c36eef80f21fd7 ("arch/sh: make the DMA mapping operations observe dev->dma_pfn_offset") > Signed-off-by: Jacopo Mondi I would have done two commits here, one to fix: dma_alloc_coherent(&pdev->dev, memsize, &dma_handle, GFP_KERNEL); and one to switch to the WARN_ON + if(dev) model. But I don't really care either way, so: Reviewed-by: Thomas Petazzoni Note that even with the if (dev) check, you don't avoid all possible regressions. For example, some parts of the sh_eth driver were passing a non-NULL struct device, but it was the wrong struct device (the one inside struct net_device, and not the one part of struct platform_device). I fixed that for sh_eth, but there could be other drivers doing bogus things. Best regards, Thomas -- Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering https://bootlin.com