All of lore.kernel.org
 help / color / mirror / Atom feed
From: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
To: <ntfs3@lists.linux.dev>
Cc: <linux-kernel@vger.kernel.org>, <linux-fsdevel@vger.kernel.org>
Subject: [PATCH 1/5] fs/ntfs3: Prevent generic message "attempt to access beyond end of device"
Date: Mon, 29 Jan 2024 11:07:29 +0300	[thread overview]
Message-ID: <7d42dc06-2f7f-40b4-8d9f-89eebd0a8f06@paragon-software.com> (raw)
In-Reply-To: <dedce962-d48d-41d6-bbbf-e95c66daba80@paragon-software.com>


It used in test environment.

Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
---
  fs/ntfs3/fsntfs.c  | 24 ++++++++++++++++++++++++
  fs/ntfs3/ntfs_fs.h | 14 +-------------
  2 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/fs/ntfs3/fsntfs.c b/fs/ntfs3/fsntfs.c
index 321978019407..ae2ef5c11868 100644
--- a/fs/ntfs3/fsntfs.c
+++ b/fs/ntfs3/fsntfs.c
@@ -1007,6 +1007,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 2b54ae94440f..81f7563428ee 100644
--- a/fs/ntfs3/ntfs_fs.h
+++ b/fs/ntfs3/ntfs_fs.h
@@ -586,6 +586,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);
@@ -1032,19 +1033,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);
-- 
2.34.1


  reply	other threads:[~2024-01-29  8:07 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-29  8:06 [PATCH 0/5] fs/ntfs3: Bugfix Konstantin Komarov
2024-01-29  8:07 ` Konstantin Komarov [this message]
2024-01-29  8:08 ` [PATCH 2/5] fs/ntfs3: Use i_size_read and i_size_write Konstantin Komarov
2024-01-29  8:08 ` [PATCH 3/5] fs/ntfs3: Correct function is_rst_area_valid Konstantin Komarov
2024-01-29  8:09 ` [PATCH 4/5] fs/ntfs3: Fixed overflow check in mi_enum_attr() Konstantin Komarov
2024-01-29  8:09 ` [PATCH 5/5] fs/ntfs3: Update inode->i_size after success write into compressed file Konstantin Komarov
2024-02-11 12:31 ` [PATCH 0/5] fs/ntfs3: Bugfix Linux regression tracking (Thorsten Leemhuis)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7d42dc06-2f7f-40b4-8d9f-89eebd0a8f06@paragon-software.com \
    --to=almaz.alexandrovich@paragon-software.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ntfs3@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.