From nobody Mon Jun 8 08:27:57 2026 Received: from mail-qk1-f172.google.com (mail-qk1-f172.google.com [209.85.222.172]) (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 7BF3037E2F9 for ; Wed, 3 Jun 2026 17:51:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780509117; cv=none; b=RUiIFCXUaMkqAO+eAgjwAzGpxfOgHsswp+djIcZSd6XV81y2B/RbzqaAb6hhCM2k5oWjmD0+R/iis+gEEwFc9MJX+Q/VEaIqHKGYtUHohYaqeEaTzZIgU3x7tLXU/2pTZ47+2BXcsqpzPPJ293c9GjoquRt/lUMdkIZWsPPhiB0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780509117; c=relaxed/simple; bh=H+YRN50ti4Grpn8ET1M09SLuCSzIJzfWGWGfUWMrwok=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=uJLnin7Tg7nTWy0c2UPMNQC3FzTEZ9Td3Bda4AhmIw1olidewlfo4EYCRsV1anxL5GCkuJyO/ssrrC5NcyMUVTEEq67EB5uyBARPKJ/QtQShP+KmH9eTGQS9099Un+PQVJP0Nh0bMbKZnW7oTQm6JY4qyfXDzOPnM+ig0NHspA4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=trailofbits.com; spf=pass smtp.mailfrom=trailofbits.com; dkim=pass (2048-bit key) header.d=trailofbits.com header.i=@trailofbits.com header.b=hwqPGyo0; arc=none smtp.client-ip=209.85.222.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=trailofbits.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=trailofbits.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=trailofbits.com header.i=@trailofbits.com header.b="hwqPGyo0" Received: by mail-qk1-f172.google.com with SMTP id af79cd13be357-91564c3a968so131039585a.1 for ; Wed, 03 Jun 2026 10:51:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=trailofbits.com; s=google; t=1780509115; x=1781113915; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=lGadk6YfHL21xxiQKKbv13C83ROX9RWh0yIQE3Hkep4=; b=hwqPGyo06dqjzxkV1H5VGr4dYwRMIAcQzof122Z4j6gM1X4XBmV2iLjklE3JGo2G4W nu/DoYp391N0xYrxUywRg34vZV3ciAtfghBN0kGk1tOz+MW08x36BvaZ8hlhCGn9WJq2 dvAlxIU4wK1NwdQZQ1NiH5G2fqLapwk4i146+DmbBma6AkST3M5tmK8tH8581Diccx9r /fDdFLgtJurSRrfrzOTDlhNo7THNHtvGjFSNTBsLm1XfcupEQ2b0Sfm5soVvODZUTExP Ag4kCvB8nWFRy1fQOfHk4qcO3sn2xyclJl5PkMZN0HoyStdIW9/R98LQuZgxp1TZJ/tU /vvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780509115; x=1781113915; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=lGadk6YfHL21xxiQKKbv13C83ROX9RWh0yIQE3Hkep4=; b=BrIeUSL5o9I68Q4dx4QqXdjMO0zMZvv8pUTuR+1I85umBCR+96OV8DEHHwupPEi5bO 1CXOu+XgxeYQS/xkVUXhh43L1sR8wKUqJY4GbYAkKC2eJucqypdWufCDYchIQMp+LVUr KeYfkAM2C/gLnUMHKewV+blqIfROhxJOIFPfEaV0hJTuUz1GB+CBTV5TyxnKnS4f+UQP q9K6tGa/ZSPL/lSbas/58C5CmXLExnSyRmwsYEQEyL4wHmF7dOOkSRTyzsTZ0gFFPLTb aP0dMCMfURHHqu5/tk4gceZx1DkPwGeAmf45N36haFNCM3uQXqwp8uXW+HtCQv21VRT2 opHQ== X-Forwarded-Encrypted: i=1; AFNElJ8GLH3osbmKgb6k8u4BHwKR+Szv1r24pCpdCMpJk0lCIItvynzK503r8TPUG2wqUE+DRkO8fYP1qet/2Bw=@vger.kernel.org X-Gm-Message-State: AOJu0YyCJCeUd9bYFUYBtiso29AtL0gkbrqLrbXPtEBkKYflceomMfAX 698NCwHswGwmO3HKOgAufdRrr+Xt1uZ0/npmd+XB/OXcCk3+4ro+anfsyVteVMudJqQ= X-Gm-Gg: Acq92OE8zjTW/JYu3aS4jKVQgfNjYTrk4sthd44gYorJ+jnwBgvmuA1MzG5dogfbhhj JvobRK5rNDpDEnKZgskV7X17Z3zBBaTpmzRZSE9H2wOcHkUdIpv6BWwveQuhGAdXUibxlLsaUvx szW5YwWckSKAu9AH4PGJnk2VP3nQeVfqrYUD7IuqZpVrkNhnGVq2/sT3RHmH6Mc5iN1tTlJ8uLp ZgnLJ6jhVsxZsrbz0IvyAgllQP3+L6MiFVx41We19OhqYEgzZk7/7sYGCFFkbTC+YpZ0Vax9ufu TRr907o9LVkYHAnDB9Ny9c1i6Wk6rjaisA+NKkZLSCtTrMsXXzxmOCA384TXb7NWfJn/NQWo+pz uQZs3L4+uQFJYBtUYCHwZoEsV28ONvT8HQ1NzodSRvuxXHRTZOsG4Zr2xBcZxPA518U22W0vkQU MszTgIXcDndy8o3YCUDnEPivJeBiEvOhU+rlR7IQ== X-Received: by 2002:a05:620a:a410:10b0:90f:786c:4a82 with SMTP id af79cd13be357-9159afd366dmr49606685a.39.1780509115338; Wed, 03 Jun 2026 10:51:55 -0700 (PDT) Received: from localhost ([161.35.96.86]) by smtp.gmail.com with UTF8SMTPSA id af79cd13be357-9158a00b104sm323202285a.4.2026.06.03.10.51.54 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 03 Jun 2026 10:51:54 -0700 (PDT) From: Samuel Moelius To: Alasdair Kergon Cc: Samuel Moelius , Mike Snitzer , Mikulas Patocka , Benjamin Marzinski , dm-devel@lists.linux.dev (open list:DEVICE-MAPPER (LVM)), linux-kernel@vger.kernel.org (open list) Subject: [PATCH] dm ebs: drop dirty bufio state when discarding blocks Date: Wed, 3 Jun 2026 17:51:50 +0000 Message-ID: <20260603175151.25026-1-sam.moelius@trailofbits.com> X-Mailer: git-send-email 2.43.0 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" dm-ebs can discard a block while a dirty dm-bufio buffer for the same block is still cached. If that buffer is later written back, stale data can be written over the discarded state. That resurrects data that userspace explicitly discarded and breaks the expected discard semantics of the target. Invalidate or clean the matching bufio state when processing discards so that old dirty buffers cannot be written back after the discard. Assisted-by: Codex:gpt-5.5-cyber-preview Signed-off-by: Samuel Moelius --- drivers/md/dm-ebs-target.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/md/dm-ebs-target.c b/drivers/md/dm-ebs-target.c index 1e52bde48b91..9fece535a0b3 100644 --- a/drivers/md/dm-ebs-target.c +++ b/drivers/md/dm-ebs-target.c @@ -212,8 +212,12 @@ static void __ebs_process_bios(struct work_struct *ws) write =3D true; r =3D __ebs_rw_bio(ec, REQ_OP_WRITE, bio); } else if (bio_op(bio) =3D=3D REQ_OP_DISCARD) { - __ebs_forget_bio(ec, bio); - r =3D __ebs_discard_bio(ec, bio); + if (write) + r =3D dm_bufio_write_dirty_buffers(ec->bufio); + if (!r) { + __ebs_forget_bio(ec, bio); + r =3D __ebs_discard_bio(ec, bio); + } } =20 if (r < 0) --=20 2.43.0