Re: [PATCH AUTOSEL 6.1 09/28] fs/ntfs3: Prevent generic message "attempt to access beyond end of device"

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

 



Hi!

> From: Konstantin Komarov <almaz.alexandrovich@xxxxxxxxxxxxxxxxxxxx>
> 
> [ Upstream commit 5ca87d01eba7bdfe9536a157ca33c1455bb8d16c ]
> 
> It used in test environment.

This seems to just replace one printk with another; not sure we want
it in stable.

Best regards,
								Pavel

> diff --git a/fs/ntfs3/fsntfs.c b/fs/ntfs3/fsntfs.c
> index 873b1434a998..34813429e2ab 100644
> --- a/fs/ntfs3/fsntfs.c
> +++ b/fs/ntfs3/fsntfs.c
> @@ -976,6 +976,30 @@ static inline __le32 security_hash(const void *sd, size_t bytes)
>  	return cpu_to_le32(hash);
>  }
>  
> +/*
> + * simple wrapper for sb_bread_unmovable.
> + */
> +struct buffer_head *ntfs_bread(struct super_block *sb, sector_t block)
> +{
> +	struct ntfs_sb_info *sbi = sb->s_fs_info;
> +	struct buffer_head *bh;
> +
> +	if (unlikely(block >= sbi->volume.blocks)) {
> +		/* prevent generic message "attempt to access beyond end of device" */
> +		ntfs_err(sb, "try to read out of volume at offset 0x%llx",
> +			 (u64)block << sb->s_blocksize_bits);
> +		return NULL;
> +	}
> +
> +	bh = sb_bread_unmovable(sb, block);
> +	if (bh)
> +		return bh;
> +
> +	ntfs_err(sb, "failed to read volume at offset 0x%llx",
> +		 (u64)block << sb->s_blocksize_bits);
> +	return NULL;
> +}
> +
>  int ntfs_sb_read(struct super_block *sb, u64 lbo, size_t bytes, void *buffer)
>  {
>  	struct block_device *bdev = sb->s_bdev;
> diff --git a/fs/ntfs3/ntfs_fs.h b/fs/ntfs3/ntfs_fs.h
> index 977e1422f904..cbeda94d7161 100644
> --- a/fs/ntfs3/ntfs_fs.h
> +++ b/fs/ntfs3/ntfs_fs.h
> @@ -580,6 +580,7 @@ bool check_index_header(const struct INDEX_HDR *hdr, size_t bytes);
>  int log_replay(struct ntfs_inode *ni, bool *initialized);
>  
>  /* Globals from fsntfs.c */
> +struct buffer_head *ntfs_bread(struct super_block *sb, sector_t block);
>  bool ntfs_fix_pre_write(struct NTFS_RECORD_HEADER *rhdr, size_t bytes);
>  int ntfs_fix_post_read(struct NTFS_RECORD_HEADER *rhdr, size_t bytes,
>  		       bool simple);
> @@ -1012,19 +1013,6 @@ static inline u64 bytes_to_block(const struct super_block *sb, u64 size)
>  	return (size + sb->s_blocksize - 1) >> sb->s_blocksize_bits;
>  }
>  
> -static inline struct buffer_head *ntfs_bread(struct super_block *sb,
> -					     sector_t block)
> -{
> -	struct buffer_head *bh = sb_bread_unmovable(sb, block);
> -
> -	if (bh)
> -		return bh;
> -
> -	ntfs_err(sb, "failed to read volume at offset 0x%llx",
> -		 (u64)block << sb->s_blocksize_bits);
> -	return NULL;
> -}
> -
>  static inline struct ntfs_inode *ntfs_i(struct inode *inode)
>  {
>  	return container_of(inode, struct ntfs_inode, vfs_inode);

-- 
People of Russia, stop Putin before his war on Ukraine escalates.

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux