Re: [PATCH] reiserfs: Check the return value from __getblk()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I was expecting Jan to pick this one up, but it's not in his pull
request that just got merged.  Looking at patches to reiserfs over the
last few cycles, patches go in a few different ways; there doesn't seem
to be a defined path.  Anyone want to take this one?

On Mon, Jun 05, 2023 at 03:23:34PM +0100, Matthew Wilcox (Oracle) wrote:
> __getblk() can return a NULL pointer if we run out of memory or if
> we try to access beyond the end of the device; check it and handle it
> appropriately.
> 
> Signed-off-by: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx>
> Link: https://lore.kernel.org/lkml/CAFcO6XOacq3hscbXevPQP7sXRoYFz34ZdKPYjmd6k5sZuhGFDw@xxxxxxxxxxxxxx/
> Tested-by: butt3rflyh4ck <butterflyhuangxx@xxxxxxxxx>
> Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") # probably introduced in 2002
> ---
>  fs/reiserfs/journal.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/fs/reiserfs/journal.c b/fs/reiserfs/journal.c
> index 4d11d60f493c..dd58e0dca5e5 100644
> --- a/fs/reiserfs/journal.c
> +++ b/fs/reiserfs/journal.c
> @@ -2326,7 +2326,7 @@ static struct buffer_head *reiserfs_breada(struct block_device *dev,
>  	int i, j;
>  
>  	bh = __getblk(dev, block, bufsize);
> -	if (buffer_uptodate(bh))
> +	if (!bh || buffer_uptodate(bh))
>  		return (bh);
>  
>  	if (block + BUFNR > max_block) {
> @@ -2336,6 +2336,8 @@ static struct buffer_head *reiserfs_breada(struct block_device *dev,
>  	j = 1;
>  	for (i = 1; i < blocks; i++) {
>  		bh = __getblk(dev, block + i, bufsize);
> +		if (!bh)
> +			break;
>  		if (buffer_uptodate(bh)) {
>  			brelse(bh);
>  			break;
> -- 
> 2.39.2
> 



[Index of Archives]     [Linux File System Development]     [Linux BTRFS]     [Linux NFS]     [Linux Filesystems]     [Ext4 Filesystem]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]     [Linux Resources]

  Powered by Linux