Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp4020321pxf; Mon, 29 Mar 2021 18:59:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx2+u1nV6U1T6vmEkNuYMxSXUo8ecqRhOKuo4VRqGyK4wOAoHAvgnYRELdkoasx6eBe+kK7 X-Received: by 2002:a05:6402:35c8:: with SMTP id z8mr31098278edc.341.1617069595172; Mon, 29 Mar 2021 18:59:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617069595; cv=none; d=google.com; s=arc-20160816; b=tbiGCthrxuQ1zopZQdmQHtz1Nx7GeZ0R+KORaZhwLG0uq1zSOYS7L0M6UCGwrnVliM XSiSNOkEc9acJ25ndctV7bQ2K3BRVgDg5N1sF8vQ6i9V7HlxQ7uU70KAyRvOXHAv0sbr aiR88GfrBpqzb3kMsY9nw1Ug38en7nAvcMfkd4TwOrHfPOdJj3BHC36tWrkfRAjn9BZG sMqO+uceo6anUqY48NMDvE8XVMqLMfW6VZ9vv8CblwCv0wosotSRDnZbCgOxHfO2N9h6 b4zbJHMddOoDGO8DfCcJi3xOINHc9MP0XVf4ovUJxvNyfz5ObS/u8XQY3ISSgujeDLo4 RQWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent:message-id:in-reply-to :date:references:subject:cc:to:from:ironport-sdr:ironport-sdr; bh=lRTT0xmZrP1Lx6yyP4ERPuc1SO8aPVIvAVit1miRZtM=; b=eIvRDzwCI4ADosmigkIHW2iHYCuTMMicT6BCN921ismFiCZx0gI9yHQNgVuxyAz+84 0tocb2DtnQ6EFci+zLULkJqX0crYHDnHMW7P4EIaTiSgQ9MbzCIiGeNvz3y+yMCeOSzL NRMDilVPJTPCBzoYNrkejMHvdyTafZX294W/1MYzF8LMEuy227wV7vBtooeSmmup4heo +ygiZWthDREvchENyfUnx2HcR/RsB8A6r5tJKil7Ez42ZNCnU+cIS4sV6WxsRAXniEDi HkzouJ/rGiL1VCHRfw9HycrmNoaRrAxmwCGjbZCz0n2drzwKbzBVQPgmBtRbSA8qK2cS fKNw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b9si13701010edq.492.2021.03.29.18.59.33; Mon, 29 Mar 2021 18:59:55 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230337AbhC3B6C (ORCPT + 99 others); Mon, 29 Mar 2021 21:58:02 -0400 Received: from mga03.intel.com ([134.134.136.65]:48469 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229842AbhC3B6B (ORCPT ); Mon, 29 Mar 2021 21:58:01 -0400 IronPort-SDR: Djkd01zS5ZCH+2c2EGsRs2AnrWiCBlFLiFLUPlohgmZ0lD0sAVC8wRhpLm3EQXgJktMtmTOHTt BHCKafYtiDBw== X-IronPort-AV: E=McAfee;i="6000,8403,9938"; a="191696215" X-IronPort-AV: E=Sophos;i="5.81,289,1610438400"; d="scan'208";a="191696215" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Mar 2021 18:58:00 -0700 IronPort-SDR: oZrfYiEFLYHlv33w1/1ygwjh5hfSEQi2PdpgjdsJ55B6ynmAGxF5Xsq+49kCowZkCbOsI1+dWM sAPTeRzemSmg== X-IronPort-AV: E=Sophos;i="5.81,289,1610438400"; d="scan'208";a="417938943" Received: from yhuang6-desk1.sh.intel.com (HELO yhuang6-desk1.ccr.corp.intel.com) ([10.239.13.1]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Mar 2021 18:57:58 -0700 From: "Huang, Ying" To: Miaohe Lin Cc: Linux-MM , linux-kernel , Andrew Morton , Matthew Wilcox , Yu Zhao , Shakeel Butt , Alex Shi , Minchan Kim Subject: Re: [Question] Is there a race window between swapoff vs synchronous swap_readpage References: <364d7ce9-ccb7-fa04-7067-44a96be87060@huawei.com> Date: Tue, 30 Mar 2021 09:57:55 +0800 In-Reply-To: <364d7ce9-ccb7-fa04-7067-44a96be87060@huawei.com> (Miaohe Lin's message of "Mon, 29 Mar 2021 21:18:20 +0800") Message-ID: <8735wdbdy4.fsf@yhuang6-desk1.ccr.corp.intel.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=ascii Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, Miaohe, Miaohe Lin writes: > Hi all, > I am investigating the swap code, and I found the below possible race window: > > CPU 1 CPU 2 > ----- ----- > do_swap_page > skip swapcache case (synchronous swap_readpage) > alloc_page_vma > swapoff > release swap_file, bdev, or ... > swap_readpage > check sis->flags is ok > access swap_file, bdev or ...[oops!] > si->flags = 0 > > The swapcache case is ok because swapoff will wait on the page_lock of swapcache page. > Is this will really happen or Am I miss something ? > Any reply would be really grateful. Thanks! :) This appears possible. Even for swapcache case, we can't guarantee the swap entry gotten from the page table is always valid too. The underlying swap device can be swapped off at the same time. So we use get/put_swap_device() for that. Maybe we need similar stuff here. Best Regards, Huang, Ying