Received: by 10.223.185.116 with SMTP id b49csp33711wrg; Fri, 2 Mar 2018 13:05:39 -0800 (PST) X-Google-Smtp-Source: AG47ELsxqwuaNRw5DxyivX7o8k9SU7atQ843NlIqNL4FM99KBVkBfv05O4hneRD5RsLf1StjSidp X-Received: by 10.99.123.92 with SMTP id k28mr5597438pgn.167.1520024739347; Fri, 02 Mar 2018 13:05:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520024739; cv=none; d=google.com; s=arc-20160816; b=g9bn0Yrop3I3e6BY9GYbWKfVEDxsnlXuSjE8acy0tAWxZVZr23nfwD+lwy00Qjqhoi W7DQ7El4hEpc7LkDTpug8ypupoOhPgLim636KUhy5BOoPAY4gEFqqk6dyO3BbFPobpEl 2d7/324ylHYVZrjK0ssx9qe0K5vhA5cp8WLKnl1bwYn/S/xNZv5M8KY5HG9JaKbr5P56 bQHCF/1Q9LGFRk8+MrXcycx6qazE+XZ1/mT1Temx0OM7Jwos0j7Aaj+PolEZyLdDMB0Z Zo1Gc/jyLVPG/suMF1CUjWhQNVZ5jxozQNGXaVJvGE5DaGC4PAIndCwrBjg60hjwRm/t v7pA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=4XCJ8RzxbaJu5WmC9Go5HKp8UaifZMQJQ8Ppv2pP0xU=; b=QGmQw0B4n02Fod0nTk0H8Tn75nk3v7IlW4dfI/eXvqH45WOkYcwhVrCqrlqgLvYOW7 MLE8+3ltLEu+YYVrarEKJKvRB1WHfWQMS1EGGgrjNb3VT4niMZ8ufDDtbpISANE6lqd5 hSavv6IyLGmA/d/Q7r/g6OUE71AF/bMvs5DVxxVumw2lgM5mBzf91a+Zm6lOrJdiYU96 z23fXQMGwvcKbk30j9f8WfAypeoF1VOPhaf5G68Ql1byCds3J0YsamFvaFThMyisxnP1 YNPMVhIw28ji950rZqiDk+WJSmcGhdbpwWZXEXe/VEYrswoe5aKfbySQ8iKkfAPFbtSx XRrA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@android.com header.s=20161025 header.b=qWPCc93W; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=android.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z31-v6si5350191plb.613.2018.03.02.13.05.24; Fri, 02 Mar 2018 13:05:39 -0800 (PST) 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; dkim=pass header.i=@android.com header.s=20161025 header.b=qWPCc93W; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=android.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1947208AbeCBSXN (ORCPT + 99 others); Fri, 2 Mar 2018 13:23:13 -0500 Received: from mail-qk0-f193.google.com ([209.85.220.193]:40347 "EHLO mail-qk0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1947195AbeCBSXL (ORCPT ); Fri, 2 Mar 2018 13:23:11 -0500 Received: by mail-qk0-f193.google.com with SMTP id o25so13060855qkl.7 for ; Fri, 02 Mar 2018 10:23:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=android.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=4XCJ8RzxbaJu5WmC9Go5HKp8UaifZMQJQ8Ppv2pP0xU=; b=qWPCc93WEs3YKhkon0OILzR7ywDRElVQAB0gPVSWBOZbbifJMdM4XsK15StwR2jT1x +St+Eq9l4Yy84E0z3cAA+AXebjnOAR2iDsFVazA4lazfVIfbwRL2dF7vHKe9hX02Xopx 1tyQTFpjhkP0G7bsMiExSwgZQl2CXP6YKGkWOtgd1T99OMmywiF1zOGsvSXAE1whiTxF 4zrDeCzw6K9y3Oos3bWNBnIRb8yVKJ5f76aO4TQ6MjZ+9wsGTe+GzT2qpa7yJPBvDKPa kJiA0FSuRy/2irVTQfonw/zYKVoz9LpuSUZCTR4QkhiH/XAR1PN/3H35U604S9re+0Oy zw8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=4XCJ8RzxbaJu5WmC9Go5HKp8UaifZMQJQ8Ppv2pP0xU=; b=PjYy1eV/rwmuK3OkF0xNXYtTFfb+2GQIv2xbIMrFAKApUrrSlOLZL0cZE9pkK5sSRE 4amZzQ5FmbSYHwsMK6hkEezXFZOTWJz+g+IFsx4dxHHvWAjjyEdFUM5MNIFPOE1Z0uHp 4XQ+1jx8ZB7NsHeGgjRx0Ip+3vBTBj79uet6zvHXOBvCxg6ZEFzbGdJ5/ARZSx3evanA 3mlyOP7zGw1QT5VsZp6F/mu6xfnhXgs0z/KQRLQR4Dj4xxXmU8H+TTalANvxQ4exzJts Zdz2XFlBk7pKrOy1EQXDZ9yMqPWCEQWZiuG0GcH59Iaa5cdyOn+2eFVn9Z3a3Us4ObxO V/8Q== X-Gm-Message-State: AElRT7FwcGx2GUhQzgvdPOW5+FjIIlooLLPzH3L6f3gdS1CrIiE9UXwh m9iXhw/hB4IBb8NqNF6dRdfday8g1m0hcelsVTclqw== X-Received: by 10.55.174.129 with SMTP id x123mr9179234qke.166.1520014990810; Fri, 02 Mar 2018 10:23:10 -0800 (PST) MIME-Version: 1.0 Received: by 10.140.85.227 with HTTP; Fri, 2 Mar 2018 10:23:10 -0800 (PST) In-Reply-To: <1516375450-30575-3-git-send-email-geert+renesas@glider.be> References: <1516375450-30575-1-git-send-email-geert+renesas@glider.be> <1516375450-30575-3-git-send-email-geert+renesas@glider.be> From: Todd Kjos Date: Fri, 2 Mar 2018 10:23:10 -0800 Message-ID: Subject: Re: [PATCH 2/4] ARM: amba: Fix race condition with driver_override To: Geert Uytterhoeven Cc: Russell King , Antonios Motakis , Adrian Salido , Sasha Levin , Greg Kroah-Hartman , LKML , stable@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org +stable what is the status of this patch? We'd like to get it into the android common branches to fix possible double free. On Fri, Jan 19, 2018 at 7:24 AM, Geert Uytterhoeven wrote: > The driver_override implementation is susceptible to a race condition > when different threads are reading vs storing a different driver > override. Add locking to avoid this race condition. > > Cfr. commits 6265539776a0810b ("driver core: platform: fix race > condition with driver_override") and 9561475db680f714 ("PCI: Fix race > condition with driver_override"). > > Fixes: 3cf385713460eb2b ("ARM: 8256/1: driver coamba: add device binding path 'driver_override'") > Signed-off-by: Geert Uytterhoeven > --- > drivers/amba/bus.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c > index 6ffd778352e6d953..36c5653ced5742b7 100644 > --- a/drivers/amba/bus.c > +++ b/drivers/amba/bus.c > @@ -69,8 +69,12 @@ static ssize_t driver_override_show(struct device *_dev, > struct device_attribute *attr, char *buf) > { > struct amba_device *dev = to_amba_device(_dev); > + ssize_t len; > > - return sprintf(buf, "%s\n", dev->driver_override); > + device_lock(_dev); > + len = sprintf(buf, "%s\n", dev->driver_override); > + device_unlock(_dev); > + return len; > } > > static ssize_t driver_override_store(struct device *_dev, > @@ -78,7 +82,7 @@ static ssize_t driver_override_store(struct device *_dev, > const char *buf, size_t count) > { > struct amba_device *dev = to_amba_device(_dev); > - char *driver_override, *old = dev->driver_override, *cp; > + char *driver_override, *old, *cp; > > if (count > PATH_MAX) > return -EINVAL; > @@ -91,12 +95,15 @@ static ssize_t driver_override_store(struct device *_dev, > if (cp) > *cp = '\0'; > > + device_lock(_dev); > + old = dev->driver_override; > if (strlen(driver_override)) { > dev->driver_override = driver_override; > } else { > kfree(driver_override); > dev->driver_override = NULL; > } > + device_unlock(_dev); > > kfree(old); > > -- > 2.7.4 >