From patchwork Thu Jul 11 16:32:30 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pei Li X-Patchwork-Id: 13730853 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id AA5B6C3DA45 for ; Thu, 11 Jul 2024 16:32:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 18C066B008C; Thu, 11 Jul 2024 12:32:37 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 115026B0092; Thu, 11 Jul 2024 12:32:37 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id ED0076B0093; Thu, 11 Jul 2024 12:32:36 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id CC1196B008C for ; Thu, 11 Jul 2024 12:32:36 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 6B0AD120730 for ; Thu, 11 Jul 2024 16:32:36 +0000 (UTC) X-FDA: 82328015112.02.ECEDAA5 Received: from mail-pg1-f177.google.com (mail-pg1-f177.google.com [209.85.215.177]) by imf14.hostedemail.com (Postfix) with ESMTP id 708D210001D for ; Thu, 11 Jul 2024 16:32:33 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=YO2VzoDv; spf=pass (imf14.hostedemail.com: domain of peili.dev@gmail.com designates 209.85.215.177 as permitted sender) smtp.mailfrom=peili.dev@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1720715537; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:in-reply-to: references:dkim-signature; bh=knRYc6x1wBrdcZgoYzGzvvoqSpAROkSsvaUc1PqkKTs=; b=MnMM4RQg2pFYaoy1BUgSHmRapC6yzWFqs/X9vQgqc8RI+oaG1v7JXljx5Nfa9wuTg8A6VY /VL6rlJIH0Vn6kjsTfzU0xXsgrzi7659n5bBwLjLvod03ySAGHxULqmgHzyH8B35apJIjj tZWEC6OsUhaByNqH3rgHlhCeApkoG+I= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=YO2VzoDv; spf=pass (imf14.hostedemail.com: domain of peili.dev@gmail.com designates 209.85.215.177 as permitted sender) smtp.mailfrom=peili.dev@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1720715537; a=rsa-sha256; cv=none; b=Lz1QJW3W3nmZAv812KBeX/mF/Cg0tUZAltbOT33I2NicGZ+AXDhjNiJAVqvqQc7FZG+1kH oYIxtya9JRgQzp2eumSIbe6rM8KXDxfT9pDG+FcmRVvTyGwfOd+UMi+Asbg17g69LDPNuu +TtXNPUlQft0DXXlnISEbTPOkc/LhS8= Received: by mail-pg1-f177.google.com with SMTP id 41be03b00d2f7-7201cb6cae1so638095a12.2 for ; Thu, 11 Jul 2024 09:32:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1720715552; x=1721320352; darn=kvack.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=knRYc6x1wBrdcZgoYzGzvvoqSpAROkSsvaUc1PqkKTs=; b=YO2VzoDvJ0DjiO0BQi1CvV7fPkJW/QIOkXGcPmvsRqXoW7tXLLJ13zTnn+vgOdb3f0 w7SS0uhX94fZA2DkognmOTTkrHnuLa66vCf4lqY5jqwzNoJZvKjUh/gKXx+Xxr8TxDww o/y3kYwMgWv025mDX8LUgmPrOoPHRtFl6nUdbkIA89ORV4cCNnG89JKPSnMFMrGnkUeC pPK7YFIOVKi7GmYtwnIUzerCL3drwcZRHc5ynZdO1EOza7ZfDaSnakvrVqgJCRmREFb+ jIZaG/M0ymHGRdIHXHeriS5JRlyUm0888+b70e6Rsn3TVesVN+k0YbDf+28LeSQ+WIae vvBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720715552; x=1721320352; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=knRYc6x1wBrdcZgoYzGzvvoqSpAROkSsvaUc1PqkKTs=; b=D8j4vxoqe5qprzUjqpcunYQjCBE131ND2WjVPAh9Mh3iPu5x9BnXiHphN+k9OhFmb/ d7iHXm2J/rF+5fd2FkVLN0k0mJXDPYmaYtfGX1WuH5SfoQ4WsgkUKpugii8SIcWsR3ou IXJPw6Knj8AY2YZX0qmcUeealXiWGpWh2dI1N56ddjLVRLGJ8wDpvOLz/eBgRdqaKjf7 3+6e+GI4jwzJOKE7jnFKNhojqQdjEiK0aNW+BaS+ABAN2hprGVSng1ZZMtAAW/lowh2L xatKKqq+Cua1iCPFmPCvs/07NiBQAIyyqz6gnJ2LlvJcUYtr83luIUMo8IVZgLcPOg1t jvAA== X-Gm-Message-State: AOJu0YxhjB/wpwQ+id4D8VZ/B8tS2OpCoJnv8JgcoTGZRNI1Gava4Yf4 bllwAkfVFG+9RSACzl2Uwgo60HqyJiZcdyN7RosJmZi/5L7mYZhV X-Google-Smtp-Source: AGHT+IFu3WuoWkraVD3aRrqr4yqWat1WaGyvP6d5wxA4VielGLmxMh0DYuQBeX1wCHjB5GPgPyO0lg== X-Received: by 2002:a17:90b:1090:b0:2c9:7e98:a4b8 with SMTP id 98e67ed59e1d1-2ca35c71f09mr6707140a91.24.1720715552086; Thu, 11 Jul 2024 09:32:32 -0700 (PDT) Received: from [127.0.1.1] (107-197-105-120.lightspeed.sntcca.sbcglobal.net. [107.197.105.120]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ca352bfeb9sm5826887a91.39.2024.07.11.09.32.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Jul 2024 09:32:31 -0700 (PDT) From: Pei Li Date: Thu, 11 Jul 2024 09:32:30 -0700 Subject: [PATCH] mm: Ignore data-race in __swap_writepage MIME-Version: 1.0 Message-Id: <20240711-bug13-v1-1-cea2b8ae8d76@gmail.com> X-B4-Tracking: v=1; b=H4sIAB0JkGYC/6tWKk4tykwtVrJSqFYqSi3LLM7MzwNyDHUUlJIzE vPSU3UzU4B8JSMDIxMDc0ND3aTSdENjXTNjk7Q0E0OLFEMzAyWg2oKi1LTMCrA50bG1tQB8N92 xVwAAAA== To: Andrew Morton , Dan Williams Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, skhan@linuxfoundation.org, syzkaller-bugs@googlegroups.com, linux-kernel-mentees@lists.linuxfoundation.org, syzbot+da25887cc13da6bf3b8c@syzkaller.appspotmail.com, Pei Li X-Mailer: b4 0.15-dev-13183 X-Developer-Signature: v=1; a=ed25519-sha256; t=1720715551; l=2466; i=peili.dev@gmail.com; s=20240625; h=from:subject:message-id; bh=26qL51uoahcNHPT1l9WKbg1Ih95sXbEPmhFJ69O7LU0=; b=mqg3Pk5oOKGaaZAmXmQ6yjUdtca4/MspG+hW0X7NiQM7UtzPLAcZL8qPv13l7iGKmtN63j+dY Vu5oBst0sshAVUgF9pd4oT32V2irgSgxku0uFky7yP2AYfJAfqsRB9z X-Developer-Key: i=peili.dev@gmail.com; a=ed25519; pk=I6GWb2uGzELGH5iqJTSK9VwaErhEZ2z2abryRD6a+4Q= X-Rspamd-Server: rspam03 X-Rspam-User: X-Rspamd-Queue-Id: 708D210001D X-Stat-Signature: 5nzwxz3s9zwk11oohz8itprapy963tsf X-HE-Tag: 1720715553-242747 X-HE-Meta: U2FsdGVkX18H3hDKDY94PmuOLIV2Tza4pI+prBlScfuMTxJ828JSHeeeSiA9YS/7BdOyTau433Yb1gBIsPDY4SZN98z90K6xWsDzqzsdjYsR08sxnyDNTXbr7JdtWydU6R31nWulaG56EgeZdMZWTpXQ9xBkzMBpl4/iemIi0IPo0QNWGU+gc97uEDLnve5b5Jdxxli+zYAHNBYC/dmDuXrGj0+in+exlTAA8ZC6zKlAPQuXpZPE3sTtEayQDyZJTaJQZzMGrOVXrEWsBCk9WFlj4+EqXUyn0R063dycnyC/ZPG/3xmqRT59NGeZ7lzBbAEMKzpskJCeGihioQlFufxqBiZvs+RXlWDJSRrVYryxSSoyjaEzk2rS/A3lAjgmXsrhwReKwylGcSvwUr0v6b8eVL6Ck6A78xP2AmDfsI+AyOzl+hoF38FJN4T84Si3GPf08ePsbC0A3DQbpuZy5P2aKz2utkEF1h6isIgM6Lpxaj72dM4P3kn6Msgt14raePgdQ2j7MOWw8K365V8TMHZ6ivkPjYrE7+dLssPlaXYvrNDiR6TEQidl+uwbqMUtlgT0KWonQOU/1TKOPMmjpQBsoAwRnPxyiGAxbXZPp5HVDZUpsBblyQ7yCk+lIkIVsLOIvHj4e67SdFmJRzIPMHCfSmB2CZ8izyP8V7Iddv2qpdAPtMhb/hQdnbuGym1pWvQHR+EBMplhmK7/Trw3M1yob/CYVfcNtyJMqya1wAxDmL78gqlJHUSPYlG7c1xW9R1QnFsU1jnuOYtiDv4kOiFwpZWpFvf7zi4ZTjidYyp/UeH8AoL28gvd2u2V50Vwf1wef5InLejEHjE2JGYqynrhgZIUwhqj2fiG5yidV73MzZIZviS0elHZpQrCcCykaj1bUshlmDO8Gash9IZGGmgrN7iIfBEJD5dGqf2zCywxu1g8IFbXVp11AXpamA1g75Ds4ropC3aaphU27oY cBCEYVRA qX0Rv+7OTLmfxUIKg+nn3z4JUbkkNM0T4Sj7+qM2p9YMbl8cFg++V3gNY5sysQfON90/rx80xpfhlUnQ3Pco9UpGMgskv0UcZ3mX5xJ3jjyMQxM/b5rQoweatZ1fQAj/Bt6DBdqOCr+EQ20CJhySPu4mSvW9dMbBJzvovQnJ6rVZCZUQqELFI5OQnes+HfZLW2G9T6E4Vv65/mRBFWCoXy/af/+N8e29JwzL13rtXjj1oik+136ULqGoy6JnQJXrObzall1SooFFaLpey3mfB2xmNXcP71efYVrN7OkbXtc+GdFXHFN7Xz2INn4YoHb7ri6wNbjuh9vKPOkzY+yDGLnsIXXLT7otYgo/ggRtWwH2o65nOPLCjim97dfruU+73x42NYqZcrZt2/sID1ioim6gBIcatVFq63t93zSFPeLqwmCTELhMH7W/Ublvmvknf+6rHanU/dFsm9RlzutRGg1ZWAlq44FQI52uknxajhnzo/VSEd77PFbQNS32iBRyavImBo8QMI+nQfBAbqjM1XJJUvYAj2N4MFYoClLqhi+e32PatoQxYsAuYsNw7nmBNaEZihSG09Gxa+z7gGazxwkFjzruPzP7nBullDVRWHclWpDCH5M8bCCVKDl3GitY0iJlYfXaFD3aNg5lXI2Jivr+Eyg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000532, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Syzbot reported a possible data race: BUG: KCSAN: data-race in __swap_writepage / scan_swap_map_slots read-write to 0xffff888102fca610 of 8 bytes by task 7106 on cpu 1. read to 0xffff888102fca610 of 8 bytes by task 7080 on cpu 0. While we are in __swap_writepage to read sis->flags, scan_swap_map_slots is trying to update it with SWP_SCANNING. value changed: 0x0000000000008083 -> 0x0000000000004083. While this can be updated non-atomicially, this won't affect SWP_SYNCHRONOUS_IO, so we consider this data-race safe. This is possibly introduced by commit 3222d8c2a7f8 ("block: remove ->rw_page"), where this if branch is introduced. Reported-by: syzbot+da25887cc13da6bf3b8c@syzkaller.appspotmail.com Closes: https://syzkaller.appspot.com/bug?extid=da25887cc13da6bf3b8c Fixes: 3222d8c2a7f8 ("block: remove ->rw_page") Signed-off-by: Pei Li --- Syzbot reported a possible data race: BUG: KCSAN: data-race in __swap_writepage / scan_swap_map_slots read-write to 0xffff888102fca610 of 8 bytes by task 7106 on cpu 1. read to 0xffff888102fca610 of 8 bytes by task 7080 on cpu 0. While we are in __swap_writepage to read sis->flags, scan_swap_map_slots is trying to update it with SWP_SCANNING. value changed: 0x0000000000008083 -> 0x0000000000004083. While this can be updated non-atomicially, this won't affect SWP_SYNCHRONOUS_IO, so we consider this data-race safe. This is possibly introduced by commit 3222d8c2a7f8 ("block: remove ->rw_page"), where this if branch is introduced. --- mm/page_io.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) --- base-commit: 256abd8e550ce977b728be79a74e1729438b4948 change-id: 20240711-bug13-634ff418d160 Best regards, diff --git a/mm/page_io.c b/mm/page_io.c index 0a150c240bf4..15be678259a5 100644 --- a/mm/page_io.c +++ b/mm/page_io.c @@ -384,7 +384,12 @@ void __swap_writepage(struct folio *folio, struct writeback_control *wbc) */ if (data_race(sis->flags & SWP_FS_OPS)) swap_writepage_fs(folio, wbc); - else if (sis->flags & SWP_SYNCHRONOUS_IO) + /* + * ->flags can be updated non-atomicially (scan_swap_map_slots), + * but that will never affect SWP_SYNCHRONOUS_IO, so the data_race + * is safe. + */ + else if (data_race(sis->flags & SWP_SYNCHRONOUS_IO)) swap_writepage_bdev_sync(folio, wbc, sis); else swap_writepage_bdev_async(folio, wbc, sis);