Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1975407pxb; Fri, 5 Mar 2021 04:33:54 -0800 (PST) X-Google-Smtp-Source: ABdhPJxKVE4zokgLXtN+3C+xaRppP5h2mQzw711VCP8OP6gvrKLpL/mhQ0l2Ndqv7aYOLy1b6aVe X-Received: by 2002:aa7:c456:: with SMTP id n22mr8676030edr.277.1614947634128; Fri, 05 Mar 2021 04:33:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614947634; cv=none; d=google.com; s=arc-20160816; b=pWDdvF2dq0HeO8PYKpkbkLa2S4VGWI5YY7cuT05FhBoDLf+8YurLDxhXVTr9bMSBS0 pbEurOXVR4Ytq6MsSym0QTYqIyn/KxlSmTyGl06ObPvHwvgjMJhGBID8sqc00r5tdR6Z +BUxwtNx51gE1N6C1GExu3LO0cLB1CV/KpsEReATMlK4n2VNU8RdQTl16y/Tu4jByzed 5zQmNR4UmfvYnKFSx2W9F4JI+ez8cYCUvm/bwjm3eI8ElJ6ABLsoLE9LRUpbIHhUELiu 4kxIQ8sUzZKQeknsOgIBxELo6WqQ3wW8FjZtJd4JVfMXUF0Ot4lp8NmYDSt4qltRwFhl Nh6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=8uvFOCypNVcuhtSul5IkoxcM0RhA4y+Y0VY7M6ZToww=; b=o2vByKxEjXlTTMcSLTrn7ytMNRFV5FCqexcCLZH/aMpCkBGkfWlAK+7o0hMjcecV7Y 9wocIDfvFRNsxw+7ctBskCXrekUaku5pgQO/mnGRIHE1+aS8LrT0aN+QkJinPFbTwo/y uiAS/uAhgvL2fb5wn1uXZo/LAK7vUfBdYvFpJXhOQl28++aN+2cHQ9nAf7NOsUVyTqjU K7EL4O8QV7bgA5Lp3rV/vv/24uFR6EOdIRFwNUgJspl8CP/zQnRMMx+RjcnGv4lfPb4E 1jzimAyoi+Yl+h7jJEOFbrAkXML3jtH11wdCFRIqR/VAfDPadHkIEmXTsRShGf2cQeZ+ U12Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=OFhUKmC7; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id bu13si1189958ejb.588.2021.03.05.04.33.27; Fri, 05 Mar 2021 04:33:54 -0800 (PST) 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; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=OFhUKmC7; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231944AbhCEMcm (ORCPT + 99 others); Fri, 5 Mar 2021 07:32:42 -0500 Received: from mail.kernel.org ([198.145.29.99]:42222 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232468AbhCEMbz (ORCPT ); Fri, 5 Mar 2021 07:31:55 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id 656CF65013; Fri, 5 Mar 2021 12:31:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1614947515; bh=q7I4pmhwraH2lRHfLtNcM8GYzt2Ga/wuWQ3myYhyTSE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OFhUKmC724q1e8Aw57ejb9bv3y8Hw9hTy9H2UMUTLJ/XYZV/PUn12pBdKgqymmuQg soPLCCEnT+a0bI1mNeDVR2bMk398mV/6m2mVGkFze1lhtYPcUbo6BkT4DHv8fYhSYR qXkj9CDXyKa/Lcs2PNTKc87vHF3VZrbrHrhGqAT4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jens Axboe , Anthony Iliopoulos Subject: [PATCH 5.10 091/102] swap: fix swapfile read/write offset Date: Fri, 5 Mar 2021 13:21:50 +0100 Message-Id: <20210305120907.758781565@linuxfoundation.org> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210305120903.276489876@linuxfoundation.org> References: <20210305120903.276489876@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jens Axboe commit caf6912f3f4af7232340d500a4a2008f81b93f14 upstream. We're not factoring in the start of the file for where to write and read the swapfile, which leads to very unfortunate side effects of writing where we should not be... Fixes: dd6bd0d9c7db ("swap: use bdev_read_page() / bdev_write_page()") Signed-off-by: Jens Axboe Cc: Anthony Iliopoulos Signed-off-by: Greg Kroah-Hartman --- include/linux/swap.h | 1 + mm/page_io.c | 5 ----- mm/swapfile.c | 13 +++++++++++++ 3 files changed, 14 insertions(+), 5 deletions(-) --- a/include/linux/swap.h +++ b/include/linux/swap.h @@ -484,6 +484,7 @@ struct backing_dev_info; extern int init_swap_address_space(unsigned int type, unsigned long nr_pages); extern void exit_swap_address_space(unsigned int type); extern struct swap_info_struct *get_swap_device(swp_entry_t entry); +sector_t swap_page_sector(struct page *page); static inline void put_swap_device(struct swap_info_struct *si) { --- a/mm/page_io.c +++ b/mm/page_io.c @@ -273,11 +273,6 @@ out: return ret; } -static sector_t swap_page_sector(struct page *page) -{ - return (sector_t)__page_file_index(page) << (PAGE_SHIFT - 9); -} - static inline void count_swpout_vm_event(struct page *page) { #ifdef CONFIG_TRANSPARENT_HUGEPAGE --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -220,6 +220,19 @@ offset_to_swap_extent(struct swap_info_s BUG(); } +sector_t swap_page_sector(struct page *page) +{ + struct swap_info_struct *sis = page_swap_info(page); + struct swap_extent *se; + sector_t sector; + pgoff_t offset; + + offset = __page_file_index(page); + se = offset_to_swap_extent(sis, offset); + sector = se->start_block + (offset - se->start_page); + return sector << (PAGE_SHIFT - 9); +} + /* * swap allocation tell device that a cluster of swap can now be discarded, * to allow the swap device to optimize its wear-levelling.