From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6C064C433DF for ; Tue, 19 May 2020 19:36:30 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 34BD020578 for ; Tue, 19 May 2020 19:36:30 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=intel-com.20150623.gappssmtp.com header.i=@intel-com.20150623.gappssmtp.com header.b="IvE2SWfN" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 34BD020578 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id BF2068000D; Tue, 19 May 2020 15:36:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BA2B6900002; Tue, 19 May 2020 15:36:29 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A91E98000D; Tue, 19 May 2020 15:36:29 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0188.hostedemail.com [216.40.44.188]) by kanga.kvack.org (Postfix) with ESMTP id 8E746900002 for ; Tue, 19 May 2020 15:36:29 -0400 (EDT) Received: from smtpin11.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 327262C6D for ; Tue, 19 May 2020 19:36:29 +0000 (UTC) X-FDA: 76834475298.11.view77_8fcf888dc0427 X-HE-Tag: view77_8fcf888dc0427 X-Filterd-Recvd-Size: 4810 Received: from mail-ej1-f65.google.com (mail-ej1-f65.google.com [209.85.218.65]) by imf09.hostedemail.com (Postfix) with ESMTP for ; Tue, 19 May 2020 19:36:28 +0000 (UTC) Received: by mail-ej1-f65.google.com with SMTP id n24so399172ejd.0 for ; Tue, 19 May 2020 12:36:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=3X3ieRi81fp1iWOzH1htJLq7a4gE8XcQKzYdnELS3Rg=; b=IvE2SWfNyc1HEWm849hzLIMS27zVegpHfrML4bRM8JYlxyx8dpPRhSI1u7KT25QOfZ 0cMS4gkm4PDLyry0RnUBcQOzKKn6nCIahXtSV1VGrB9gJSsRoN5wxZilUI/lg8LkkNbx rR34iurepjdrl4AU2NcaZh4P42lBri8KaaQShNexJBPe0UrX1mqDuf2ndDlVVjczb+VL OGh4T3sWxiQHcG7ZsnFsfr7Qnb+DUO9J5Uamb1+FgigyPhvAOQzsTYD7BF/4kbOdV4AA x7f33EiRO/23h/DSLENU5khjyBb0uQHa1tKnwDVQC+LHa02e2D5VJOHDNW0KcNClsrKf Bk2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=3X3ieRi81fp1iWOzH1htJLq7a4gE8XcQKzYdnELS3Rg=; b=RhtEo12oWcX8liDp8RaxMGydnDQ8cA9m5Zdcei9bLOEYfBhy4BFkLqXWbbPTaD1GN9 hSHhRHYEPq/fiX7h8bd1jqN4IXQ4LmgGmg++ejsmx+Sv0dNINbGNOmwfJO8/fSFjgkY8 uSr8y6k3va97EhdP1TROmYMQS5uxXgKVZKOPFQjEzHN0+6Oxm6dWIO6PFpg0Kf1jiKOU gF9iQbmLm9N3VRvmVLJhZHfMIqmL9MJugr8DEvStAnvvFCvCVpRsp068PNc5eTaJhzXd f+r8IQt6MQ3EmVV1cXnK3IA0M5dJV92p93BKbX2QQPq9eBPkuZ9Nwb1ripKfNXPobyPm 3tvQ== X-Gm-Message-State: AOAM531U1IPk6MvTh59zpdwM15YKMxF1X0Yyvon+aiWpqSFkuKKvJYQN AjdxYGy6gfZT9A40uCzUwjpA29zmsDILILu5SvdSoA== X-Google-Smtp-Source: ABdhPJzVXCcjEzanIYQFTBgeXCnzx374fZZtsMpCor7WLQqXWHf7+pUq3xFxoTLKhSlp3iAkff0MpR/K14RfFbGsVUA= X-Received: by 2002:a17:906:a3d1:: with SMTP id ca17mr760410ejb.174.1589916986746; Tue, 19 May 2020 12:36:26 -0700 (PDT) MIME-Version: 1.0 References: <158987153989.4000084.17143582803685077783.stgit@dwillia2-desk3.amr.corp.intel.com> <20200519184634.GZ16070@bombadil.infradead.org> In-Reply-To: <20200519184634.GZ16070@bombadil.infradead.org> From: Dan Williams Date: Tue, 19 May 2020 12:36:15 -0700 Message-ID: Subject: Re: [PATCH v2] /dev/mem: Revoke mappings when a driver claims the region To: Matthew Wilcox Cc: Greg KH , Arnd Bergmann , Ingo Molnar , Kees Cook , Russell King , Andrew Morton , Linux Kernel Mailing List , Linux MM Content-Type: text/plain; charset="UTF-8" X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Tue, May 19, 2020 at 11:46 AM Matthew Wilcox wrote: > > On Tue, May 19, 2020 at 12:03:06AM -0700, Dan Williams wrote: > > +void revoke_devmem(struct resource *res) > > +{ > > + struct inode *inode = READ_ONCE(devmem_inode); > > + > > + /* > > + * Check that the initialization has completed. Losing the race > > + * is ok because it means drivers are claiming resources before > > + * the fs_initcall level of init and prevent /dev/mem from > > + * establishing mappings. > > + */ > > + smp_rmb(); > > + if (!inode) > > + return; > > Which wmb() is this pairing with? > > > +static int devmem_init_inode(void) > > +{ > > + static struct vfsmount *devmem_vfs_mount; > > + static int devmem_fs_cnt; > > + struct inode *inode; > > + int rc; > > + > > + rc = simple_pin_fs(&devmem_fs_type, &devmem_vfs_mount, &devmem_fs_cnt); > > + if (rc < 0) { > > + pr_err("Cannot mount /dev/mem pseudo filesystem: %d\n", rc); > > + return rc; > > + } > > + > > + inode = alloc_anon_inode(devmem_vfs_mount->mnt_sb); > > + if (IS_ERR(inode)) { > > + rc = PTR_ERR(inode); > > + pr_err("Cannot allocate inode for /dev/mem: %d\n", rc); > > + simple_release_fs(&devmem_vfs_mount, &devmem_fs_cnt); > > + return rc; > > + } > > + > > + /* publish /dev/mem initialized */ > > + WRITE_ONCE(devmem_inode, inode); > > + smp_wmb(); > > + > > + return 0; > > ... is that this one? I don't see what it's guarding against. Surely if > it's needed to ensure that the writes to 'inode' have happened before > the write of the inode pointer, the smp_wmb() needs to be before the > WRITE_ONCE, not after it? Whoops, yes. Thanks for the catch.