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

Matthew Wilcox <[email protected]>
Newsgroups gmane.linux.file-systems,gmane.comp.file-systems.reiserfs.general
Message-ID <[email protected]>
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) <[email protected]>
> Link: https://lore.kernel.org/lkml/CAFcO6XOacq3hscbXevPQP7sXRoYFz34ZdKPYjmd6k5sZuhGFDw@mail.gmail.com/
> Tested-by: butt3rflyh4ck <[email protected]>
> 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
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.