lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20241125152122.GZ31418@suse.cz>
Date: Mon, 25 Nov 2024 16:21:22 +0100
From: David Sterba <dsterba@...e.cz>
To: Sasha Levin <sashal@...nel.org>
Cc: linux-kernel@...r.kernel.org, stable@...r.kernel.org,
	Qu Wenruo <wqu@...e.com>, David Sterba <dsterba@...e.com>,
	clm@...com, josef@...icpanda.com, linux-btrfs@...r.kernel.org
Subject: Re: [PATCH AUTOSEL 6.12 10/19] btrfs: make
 extent_range_clear_dirty_for_io() to handle sector size < page size cases

On Sun, Nov 24, 2024 at 07:38:45AM -0500, Sasha Levin wrote:
> From: Qu Wenruo <wqu@...e.com>
> 
> [ Upstream commit a4ef54dbb576032ba31a646a5ffc8a26a83cb92c ]
> 
> For btrfs with sector size < page size (e.g. 4K sector size, 64K page
> size), and enable the sector perfect compression support, then the
> following dirty range can lead to problems:
> 
>    0     32K     64K     96K    128K
>    |     |///////||//////|    |/|
>                               124K
> 
> In above case, if we start writeback for that inode, the last dirty
> range [124K, 128K) will not be submitted and cause reserved space
> leakage:
> 
> - Start writeback for page 0
>   We find the range [32K, 96K) is suitable for compression, and queue it
>   into a workqueue to do the delayed compression and submission.
> 
> - Compression happens for range [32K, 96K)
>   Function extent_range_clear_dirty_for_io() is called, however it is
>   only doing full page handling, not considering any the extra bitmaps
>   for subpage cases.
> 
>   That function will clear page dirty for both page 0 and page 64K.
> 
> - Writeback for the inode is done
>   Because page 64K has its dirty flag cleared, it will not be considered
>   as a writeback target.
> 
> This means the range [124K, 128K) will not be submitted, and reserved
> space for it will be leaked.
> 
> Fix this problem by using the subpage helper to clear the dirty flag.
> 
> Signed-off-by: Qu Wenruo <wqu@...e.com>
> Signed-off-by: David Sterba <dsterba@...e.com>
> Signed-off-by: Sasha Levin <sashal@...nel.org>

Please drop this patch from stable, it's preparatory work and has
otherwise no effect.

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ