From nobody Mon Dec 1 21:30:00 2025 Received: from mail-pl1-f174.google.com (mail-pl1-f174.google.com [209.85.214.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CC9812FCC16 for ; Mon, 1 Dec 2025 09:05:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764579902; cv=none; b=Kp+ouiHCKyDKtDG57JvwdkpcXjOdzWnOKbPxtqgXovzAGxAJz4lOA+BnfcnQKLji/LuHEH7SdBz3WCZe2VnMal1Arjj0ggNOQNGMBYYYpmaLhKWsdheo1ygHl6Arsr8gR4GoAH8xOCZX04FU+vGHbFDJgmnKmdb8jkbHzYvPtA0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764579902; c=relaxed/simple; bh=JLIdNXPMejF737Jv1xzF5GicNRibkuRDb9iX4pmjoI8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Nrapz+CX/+8LMvoC7VdQDlMS1Ze4L9IGv7B+a3RXGzsXrrJm/N5iw8rrjcBhrzuuIfWGkqthqAz72+2xEYqTCkctyT0bjYBvGOE4lKaFJioI/hWrlJGHomy6vW1hXrZDfjAoy18XW1M6d5fMVG2ES+swzyGDRi7r2U3LbXmWtS8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=nbieNTfq; arc=none smtp.client-ip=209.85.214.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nbieNTfq" Received: by mail-pl1-f174.google.com with SMTP id d9443c01a7336-297f35be2ffso58910975ad.2 for ; Mon, 01 Dec 2025 01:05:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764579900; x=1765184700; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=3B+NwUppxNtx5dO3GeNOAlGv3QVGc2Q+cteUdMRhiTw=; b=nbieNTfqgJGTlh/GgrhZAIZaBLoZjTBD6ft2QW7Rgu7WMrpzdkJ5NdroTW8N4xGBjg HFw+YJzO7Qw0/Tj4c7AQVPrtPflzgGweYjFVtri7hzymjCSmpw+wvUAv6Jt+lCmCaLad uMEsGfgGnuwvyvt6GWD7MwF4SDOI+CP24OLoVGrYQPRzyk+bO6ZbMnAceFKP1ip7ibP9 0d1vgMJsFcVXJuBLzkOvTQr2fbw6dOW4WcKClu9QV9h5X6uYvs103wmCyEP5J9wRSY7d 9CnHwGQECUKQQs+ATXtFoWZA2sJ7Lytmem/TdoRksgpsHcZZ8blVBQbZUOBJp2IwvYg7 1haw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764579900; x=1765184700; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=3B+NwUppxNtx5dO3GeNOAlGv3QVGc2Q+cteUdMRhiTw=; b=AjusDYo1+Zt67LNhUfb4YqXF1Yv5g9CRW3b11XDRMhQg+cO+caH96Y65dLX5JueXVV +ub8ygFGfGYD6fHiiws+CpBMbvHJ9xJPt1Bq0Jtb4pBSgoVPkXBZJa0U9bhvfhpX4+lV ukMoy9kVOGKKIDF29copqAPHakpSixX7kNWLWlN3SgluzHdYitRbvcU8+ZrIEYfJ8M6p 4n9sXneCKdtd/7GADKI1sXh5pwFpTRu8HmQAwkq/TnZpCg4FrkvTt8O0wu+HEwArRTJp rrFDZfA4pv6tD0K07TsN5T+cgGilgcEMqbCaOfMWHeio1E+MRH0cisAF8SIyQWotaEs3 lAlA== X-Forwarded-Encrypted: i=1; AJvYcCWW8o8tT9DMUJIXZv0a9FyH3pAaIGIySzPvZSAeAmwaCVgE1KdV+eiZQFku1aL8sgvJIbwL0oFBxYQEnqg=@vger.kernel.org X-Gm-Message-State: AOJu0YzpmG+FnQynhQAmfpWAhzwwcSWy+jzdoK4yZ6JrPJ4ASo7QrcN+ PXjJD6lpfiEzOJvY29KnsUjE7BxBHjoOkN6CpOqH1/lzkG6kiBzMdkOe X-Gm-Gg: ASbGnctxaAq7gDMFIpjco7cLQOw3dHlhmVKyuWbmNk4nkdUNlv7MgqIacSs7Ibs/f/G W9DMeigsSb1rc4dxZKShI29oC20do0k1UxmA1yxg6eBQfbX0Fm8wV4xfg/vJWK4/bvtg8UmGExh pJL6au+buBII1S45VykbW8BMr1k2BbimW3vmQr+Joiu5WOKBpx1UfZewy/2IeIfIgK0/F9zwhiO waSl2m7dEeoVIgNKEUB8bF5ZrL1GmM38rRPdxb00LPIT56dUChWprwAZ6m/Q1jZWQRRM3YoGNiM qLKSgtKYEOtbL3xkvYoEYKbvcydwZhsRfsypTbGnpU/iWSwElVNG7f4GrMczE5qx8oTBObKzwws W+ZfSXlgkv5z5c50yqWShKin6EuQBenA9x0hzZCC498vn/EGTWRirVrwJo7wUj5ONDhz1QeBHnp WBGbJ7hmuckReMs3mkYr0vykBkrQ== X-Google-Smtp-Source: AGHT+IH19AutgiB4q5n1yDQ8ciHD5SRBcvRXU/5QyAJ1UaeK08hADApRcLuj+Gt1810PslIB22fggg== X-Received: by 2002:a05:7022:6885:b0:119:e569:f61e with SMTP id a92af1059eb24-11c9d84bc2amr26089780c88.23.1764579899796; Mon, 01 Dec 2025 01:04:59 -0800 (PST) Received: from localhost.localdomain ([104.128.72.44]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-11dcae73bedsm54908307c88.0.2025.12.01.01.04.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Dec 2025 01:04:59 -0800 (PST) From: zhangshida X-Google-Original-From: zhangshida To: Johannes.Thumshirn@wdc.com, hch@infradead.org, agruenba@redhat.com, ming.lei@redhat.com, hsiangkao@linux.alibaba.com, csander@purestorage.com, colyli@fnnas.com Cc: linux-block@vger.kernel.org, linux-bcache@vger.kernel.org, linux-kernel@vger.kernel.org, zhangshida@kylinos.cn, starzhangzsd@gmail.com Subject: [PATCH v4 1/3] bcache: fix improper use of bi_end_io Date: Mon, 1 Dec 2025 17:04:40 +0800 Message-Id: <20251201090442.2707362-2-zhangshida@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20251201090442.2707362-1-zhangshida@kylinos.cn> References: <20251201090442.2707362-1-zhangshida@kylinos.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Shida Zhang Don't call bio->bi_end_io() directly. Use the bio_endio() helper function instead, which handles completion more safely and uniformly. Suggested-by: Christoph Hellwig Signed-off-by: Shida Zhang --- drivers/md/bcache/request.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/md/bcache/request.c b/drivers/md/bcache/request.c index af345dc6fde..82fdea7dea7 100644 --- a/drivers/md/bcache/request.c +++ b/drivers/md/bcache/request.c @@ -1104,7 +1104,7 @@ static void detached_dev_end_io(struct bio *bio) } =20 kfree(ddip); - bio->bi_end_io(bio); + bio_endio(bio); } =20 static void detached_dev_do_request(struct bcache_device *d, struct bio *b= io, @@ -1121,7 +1121,7 @@ static void detached_dev_do_request(struct bcache_dev= ice *d, struct bio *bio, ddip =3D kzalloc(sizeof(struct detached_dev_io_private), GFP_NOIO); if (!ddip) { bio->bi_status =3D BLK_STS_RESOURCE; - bio->bi_end_io(bio); + bio_endio(bio); return; } =20 @@ -1136,7 +1136,7 @@ static void detached_dev_do_request(struct bcache_dev= ice *d, struct bio *bio, =20 if ((bio_op(bio) =3D=3D REQ_OP_DISCARD) && !bdev_max_discard_sectors(dc->bdev)) - bio->bi_end_io(bio); + detached_dev_end_io(bio); else submit_bio_noacct(bio); } --=20 2.34.1 From nobody Mon Dec 1 21:30:00 2025 Received: from mail-pf1-f176.google.com (mail-pf1-f176.google.com [209.85.210.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 92FCC2FF65D for ; Mon, 1 Dec 2025 09:05:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764579907; cv=none; b=U/VAmLEIOSWzKVbG+MzJx7NPU5EOwHSzeUy4DqXCaWYKKIMtKcPpAI3iTirO1dQBZSCts7Zxp4c0IWYYEhZBmwuI+Wnof1uHeHtm4k2EfK72OcNpgT2UVR59DLNyNS966/i7/4oThmGeX+CPczRT4t6Wlj3QugzKnIWxL3Ecvl8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764579907; c=relaxed/simple; bh=9o7pMGLR+wHFQD17nhkv0K8NYO8+CXCbWzvTdLvv3IA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Zp4/NJDfkG6n1+AqIAKdRvi6daNCccXiUjbHokYoitFgQgMI9zpv4vpeHjQarnTgJRWluePbvqCkWsvG/5sb3dWxvzG8WXeFTlh82Otm5mrdMyWqoH0EWXAFBrBF6eiAi9FIzgIy1EYWeZ/D6c3nIl6qiaU03v3Qg4oppcb4alQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Vhl5GEBa; arc=none smtp.client-ip=209.85.210.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Vhl5GEBa" Received: by mail-pf1-f176.google.com with SMTP id d2e1a72fcca58-7bf0ad0cb87so4727421b3a.2 for ; Mon, 01 Dec 2025 01:05:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764579904; x=1765184704; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=aw316iKTX/2VGJbIgc6JIwbU4eBfsa9UZDP5Ykz1NQ8=; b=Vhl5GEBa/6ceMPeelPbR6icywBTHZ0JJO6fJqxpJzIO/diC4ORggfcoswFxs5vsOIW GAxx9OV4MCvj3sWngrfu2LeSS3yzdvZxnaEZGgVa58E++ecYOwBnXomQK2yc7UYJMoz2 82AZAuHRCIAMoa6uXMxkRsZgaoAqrfKbZ30T3XgmpUpMRlrZDi9bsZBd0jL38v5H1CUy FTTzWNaZiwYy/6wMYsDqGDyWPgXpY7qsVAcb5bR4ij73OW2EJM/xN0gLW9BrHJr/hYkF GC7HlFyjgg8qUr7VfOMLsHJvP+pUtGJOV7YgpA2EbVp4QWhMdA5kIiGdX5rWRlQATsbw J19Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764579904; x=1765184704; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=aw316iKTX/2VGJbIgc6JIwbU4eBfsa9UZDP5Ykz1NQ8=; b=w0pZslUeowLo1ZWdkYtkm5o/Y+vFSJzTQbAjWxiuU9HsiOmnm5PyBrCZ3dYg7FuNdB sz2kgP3m87TGJf2zGlur9bUw69FPJeKoWUHsWMMUs0wQLAL2EGwIgrQvKip4j/3BRART JGi39Di1UYEpRqQAriTr5g85jm0XZOUjmyxkFN+VnKAcRZiS1cAcs/Mu2VR1Ph/2w1++ FD1FVNUhxMPV7mm/JEctHZapsuYi4xSwVk77AKweJhHK2e9PhbvQN/AwYaqwc+SP1qym ebXnph4etIiBS7tUuEJ/llM0dq+/IlXhIwatGviyrrdplzWNM1jK0MreD5o8kuS1RChD gUrQ== X-Forwarded-Encrypted: i=1; AJvYcCVKhz6TXYJUb+VqshB3YTBLJX0vOSNPV6DSQtB51fopRzVnnaoen+pf4e8VYdF+isar0N3lcMdby8j9ORQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyWa46GwMqgTsZOkzfjoRUQguFM84whf8cB/Y9AUp6W4ieKTOtV lqahdtZEOD0XcJ0QT8uqHYeu2Vicf5cD6zf2e5jHOD21BKXUZtNQkF3s X-Gm-Gg: ASbGncttibfoAMpYLyViaxh+VjzzQpkov4LmHRxV/OAQDWKAIf4hGtIqU/cwBXTrvzK jcaF2NWkik7hmgLcK5TIT5q8GmAqvMwcjSoWFkKTUrQ5uTUKIE6u96MJWgnP2UZyC5qvJM9Zpvw kXP1yfXn4lfd0kAjvRqPCVzxAsFNK7eJu8oorYiHuYBGm1l9ojBxy71/SzwcUEf22jyTj+drNFW Cdsu1pfxOtdwNl/DBNSxti8pyOZJXTygIka8bAkShywlP5vykmBdr1KIYkbEsMB9C92vLz29jmX OhM0rHdghMQX6+DMi/b0OPkDyinuyeeL75FxtgqV6xP5TDBQPE0cwIr6E3xoOatTjK0Rm0KzFE/ dOe4FjX3n1TfNp0SLD4sSsG0hzeu4ifzxSu/FSZ4iOdthurfPP5uwpey7v2MXZix2DAyDsgILVm 4R/7cDWQ/2bC2mII/k4s99vwfHPg== X-Google-Smtp-Source: AGHT+IGoGR2vvfoyHhoCGadAIM1tRSK0aixyW3oTcQUZl+ZTkQaaORwlprV0B52obn6Pxd8CCBZOyg== X-Received: by 2002:a05:7022:e80e:b0:119:e569:f624 with SMTP id a92af1059eb24-11c9d84bf9fmr17998389c88.29.1764579903743; Mon, 01 Dec 2025 01:05:03 -0800 (PST) Received: from localhost.localdomain ([104.128.72.44]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-11dcae73bedsm54908307c88.0.2025.12.01.01.05.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Dec 2025 01:05:03 -0800 (PST) From: zhangshida X-Google-Original-From: zhangshida To: Johannes.Thumshirn@wdc.com, hch@infradead.org, agruenba@redhat.com, ming.lei@redhat.com, hsiangkao@linux.alibaba.com, csander@purestorage.com, colyli@fnnas.com Cc: linux-block@vger.kernel.org, linux-bcache@vger.kernel.org, linux-kernel@vger.kernel.org, zhangshida@kylinos.cn, starzhangzsd@gmail.com, Christoph Hellwig Subject: [PATCH v4 2/3] block: prohibit calls to bio_chain_endio Date: Mon, 1 Dec 2025 17:04:41 +0800 Message-Id: <20251201090442.2707362-3-zhangshida@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20251201090442.2707362-1-zhangshida@kylinos.cn> References: <20251201090442.2707362-1-zhangshida@kylinos.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Shida Zhang Now that all potential callers of bio_chain_endio have been eliminated, completely prohibit any future calls to this function. Suggested-by: Ming Lei Suggested-by: Andreas Gruenbacher Suggested-by: Christoph Hellwig Reviewed-by: Christoph Hellwig Signed-off-by: Shida Zhang --- block/bio.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/block/bio.c b/block/bio.c index b3a79285c27..1b5e4577f4c 100644 --- a/block/bio.c +++ b/block/bio.c @@ -320,9 +320,13 @@ static struct bio *__bio_chain_endio(struct bio *bio) return parent; } =20 +/** + * This function should only be used as a flag and must never be called. + * If execution reaches here, it indicates a serious programming error. + */ static void bio_chain_endio(struct bio *bio) { - bio_endio(__bio_chain_endio(bio)); + BUG_ON(1); } =20 /** --=20 2.34.1 From nobody Mon Dec 1 21:30:00 2025 Received: from mail-pg1-f179.google.com (mail-pg1-f179.google.com [209.85.215.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A7A412FFDD5 for ; Mon, 1 Dec 2025 09:05:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764579911; cv=none; b=n4nhMLjgFR3WvErjqGM2R56Gm09UNoaiE6Fs6iH/8nXaQ/x1BAHiaBvo1j0d3Dn19VGCdDMuAsiEtY0E68z2NAVKJTzEYC63zTJ7FhUUSP9YnfYuZE6Z76nRj+gnDsnPxnLv9IMK2tL4dV/Qwx6FB9RpVYwGex/4hHixqRUNk3A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764579911; c=relaxed/simple; bh=aYxMtN+DE9oP1VlQcVa69Tb9BdLadbrZwyizizgybXw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=UcidXhqXJ6mcnDYMf6qXWTiVHJBhQbAe/rjLnkSjbhFgj/E2spio2XbNeLWJOvNBNkSr6ZsdTVG54RpXlEdD9RsOROIs5bd+nxzrcyIuAdiv0wDl9vnsg2kH7C/5SNp4/rXFnHc+ZpK7/rPbsYePIuaU4NXjm31JZ6/HEOM9Vtk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=OpcWBsdP; arc=none smtp.client-ip=209.85.215.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OpcWBsdP" Received: by mail-pg1-f179.google.com with SMTP id 41be03b00d2f7-bc0e89640b9so2595229a12.1 for ; Mon, 01 Dec 2025 01:05:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764579908; x=1765184708; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kyEEQJEWsLRxIUx0Z9OWCeFI3uMaF2jR+E58v4Ivl7s=; b=OpcWBsdPV1blfQTxLrrgkv7mt972nHHZPujPQeiAmtBgaDD9lSffyrUFaL7H00erFY w6b8OEIFvGc5QeDB1cqZOxYQ0mEIl5W3OH4/kGrW+P/8WlPqCR2N2zLYVZnYp2rUPxo5 MbjaeieBdZzU3XQwOrtVQPunCD05y2jtFmVfQs9uru8kQQOpbP/xGJxLzRfDwBtV09TR fNt2zis8X7m5gqhODtdMm/Nk14kS6T/6t9jyWN7xg82dDql3k2Bj1CA4rfbq7SbXiKIL z/Z+AOSxx/SwbMtyJxx71gN5J5QnDMNr1fCabzBLsygp0waTCGyU28764Oc2uyLNhwzR teRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764579908; x=1765184708; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=kyEEQJEWsLRxIUx0Z9OWCeFI3uMaF2jR+E58v4Ivl7s=; b=I69M/DsfSwMUG+UWIW0xpy9y1aVIxaQwAm0g8QEa2JnmQB2aMAZCFyctbJHVaMQq9k TYfRF/0/f3hPVDTPdrNCW+XbBbgUyFc73dQfZBUpmuUFGvS4peUgGjYuJyQeyKL8VTh6 HIuqD7nWAqsnIb0vhDJ6RnyX8ZgBhIoyWh6FsBgjMmh4rZ3+3tDFuNy+ru+oRXGFUF1w naNC84kU45MHLH/xOB8YTDx+9DKUq9ymz7b78sw5q5//Ec3dFrgfNjHHliZc0wMdB90s WCWUFr5l1e8ZrZRFqXaKnoQpjdSntnWfCKvZcehxzWPBC2Jqs1799Z8mXjBqvmv70x2Q t/fQ== X-Forwarded-Encrypted: i=1; AJvYcCWIL2EQWzmcoASP3IK2iONWlDVecnna9udsJcvQe9sYddVX55BCRCDvswwFX1oVFshvCw6zBR6hmHZ/aKU=@vger.kernel.org X-Gm-Message-State: AOJu0YzwGpJ1yOquis40p0gisclSkEQsLcnwbYZ6z3rfmBQmpWZulnxA CCS3pshs1o/BqxXds0rNN6pKQsQVTLb+bpXsnIYDy1+deTQdFlvBYdD7 X-Gm-Gg: ASbGnctiUN4M0oS8vl/c8TqgtIJcXcATqrjMa1KVFIDKgNV9Cav8XWU42VjL2cLhzxu wloT5C+6BR5CVig5yN+B9szCPIY1UKz5bso+hHKebdDfMvPm0HI0saDXVgfKC1D+kshT8CaZMjd oIO2z8vZov9ct9Zb9ugJSyJq7Y9Ms3YcUYSmkrwE+87KTjB8e4TupsGIbVha+ZSKPPtEVFfCwZo ZkptN6RLEenKnhFTVyyda1I4+TbL08v7gFsvZJZyK2GsFySwi6N/esvNwATH97HU0YDjCraCmXu vQtyBZUio/7jEKD+tMpPCUuHIN7pBV1S92RU5SaeLKINOzinwS+htt643Bm0+SLB4nNFWtbOlja Xx4WQ7W7cWRO9QsaxyPQ1iGTFR0PPzm01qxuxlfe9VBgBEUt1ojKKwa5DefTjqkSQ+W/QmkeYEF BwnxjyKO/UWIqrnZ5yW0AgWaMNCw== X-Google-Smtp-Source: AGHT+IERKCYKXvZ6dTL/bPTF2aHnk3Job6CGRSNu/ZdXHTkTIUuDU/0EXZprXpLJTdUnmnyIDS++sg== X-Received: by 2002:a05:7300:dc0d:b0:2a7:3eee:df10 with SMTP id 5a478bee46e88-2a73eef4cc5mr23118540eec.27.1764579907713; Mon, 01 Dec 2025 01:05:07 -0800 (PST) Received: from localhost.localdomain ([104.128.72.44]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-11dcae73bedsm54908307c88.0.2025.12.01.01.05.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Dec 2025 01:05:07 -0800 (PST) From: zhangshida X-Google-Original-From: zhangshida To: Johannes.Thumshirn@wdc.com, hch@infradead.org, agruenba@redhat.com, ming.lei@redhat.com, hsiangkao@linux.alibaba.com, csander@purestorage.com, colyli@fnnas.com Cc: linux-block@vger.kernel.org, linux-bcache@vger.kernel.org, linux-kernel@vger.kernel.org, zhangshida@kylinos.cn, starzhangzsd@gmail.com, Christoph Hellwig Subject: [PATCH v4 3/3] block: prevent race condition on bi_status in __bio_chain_endio Date: Mon, 1 Dec 2025 17:04:42 +0800 Message-Id: <20251201090442.2707362-4-zhangshida@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20251201090442.2707362-1-zhangshida@kylinos.cn> References: <20251201090442.2707362-1-zhangshida@kylinos.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Shida Zhang Andreas point out that multiple completions can race setting bi_status. The check (parent->bi_status) and the subsequent write are not an atomic operation. The value of parent->bi_status could have changed between the time you read it for the if check and the time you write to it. So we use cmpxchg to fix the race, as suggested by Christoph. Suggested-by: Andreas Gruenbacher Suggested-by: Christoph Hellwig Suggested-by: Caleb Sander Mateos Reviewed-by: Christoph Hellwig Signed-off-by: Shida Zhang --- block/bio.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/block/bio.c b/block/bio.c index 1b5e4577f4c..097c1cd2054 100644 --- a/block/bio.c +++ b/block/bio.c @@ -314,8 +314,9 @@ static struct bio *__bio_chain_endio(struct bio *bio) { struct bio *parent =3D bio->bi_private; =20 - if (bio->bi_status && !parent->bi_status) - parent->bi_status =3D bio->bi_status; + if (bio->bi_status) + cmpxchg(&parent->bi_status, 0, bio->bi_status); + bio_put(bio); return parent; } --=20 2.34.1