From: Dan Carpenter <dan.carpenter@oracle.com>
To: tytso@mit.edu
Cc: linux-ext4@vger.kernel.org, kernel-janitors@vger.kernel.org,
Fengguang Wu <fengguang.wu@intel.com>
Subject: re: ext4: convert file system to meta_bg if needed during resizing
Date: Tue, 18 Sep 2012 11:46:35 +0000 [thread overview]
Message-ID: <20120918114634.GA12383@elgon.mountain> (raw)
Hello Theodore Ts'o,
The patch 1c6bd7173d66: "ext4: convert file system to meta_bg if
needed during resizing" from Sep 13, 2012, leads to the following
warning:
fs/ext4/resize.c:1829 ext4_convert_meta_bg()
error: potential NULL dereference 'ei'.
1770 static int ext4_convert_meta_bg(struct super_block *sb, struct inode *inode)
1771 {
1772 handle_t *handle;
1773 struct ext4_sb_info *sbi = EXT4_SB(sb);
1774 struct ext4_super_block *es = sbi->s_es;
1775 struct ext4_inode_info *ei = 0;
^^^^^^
Sparse is going to complain. Not sure why Fengguang hasn't emailed you.
1776 ext4_fsblk_t nr;
1777 int i, ret, err = 0;
1778 int credits = 1;
1779
1780 ext4_msg(sb, KERN_INFO, "Converting file system to meta_bg");
1781 if (EXT4_HAS_COMPAT_FEATURE(sb, EXT4_FEATURE_COMPAT_RESIZE_INODE)) {
1782 if (es->s_reserved_gdt_blocks) {
1783 ext4_error(sb, "Unexpected non-zero "
1784 "s_reserved_gdt_blocks");
1785 return -EPERM;
1786 }
1787 if (!inode) {
1788 ext4_error(sb, "Unexpected NULL resize_inode");
1789 return -EPERM;
1790 }
1791 ei = EXT4_I(inode);
^^^^^^^^^^^^^^^^^^
We only set "ei" if EXT4_FEATURE_COMPAT_RESIZE_INODE.
1792
1793 /* Do a quick sanity check of the resize inode */
1794 if (inode->i_blocks != 1 << (inode->i_blkbits - 9))
1795 goto invalid_resize_inode;
1796 for (i = 0; i < EXT4_N_BLOCKS; i++) {
1797 if (i = EXT4_DIND_BLOCK) {
1798 if (ei->i_data[i])
1799 continue;
1800 else
1801 goto invalid_resize_inode;
1802 }
1803 if (ei->i_data[i])
1804 goto invalid_resize_inode;
1805 }
1806 credits += 3; /* block bitmap, bg descriptor, resize inode */
1807 }
1808
1809 handle = ext4_journal_start_sb(sb, credits);
1810 if (IS_ERR(handle))
1811 return PTR_ERR(handle);
1812
1813 err = ext4_journal_get_write_access(handle, sbi->s_sbh);
1814 if (err)
1815 goto errout;
1816
1817 EXT4_CLEAR_COMPAT_FEATURE(sb, EXT4_FEATURE_COMPAT_RESIZE_INODE);
1818 EXT4_SET_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_META_BG);
1819 sbi->s_es->s_first_meta_bg 1820 cpu_to_le32(num_desc_blocks(sb, sbi->s_groups_count));
1821
1822 err = ext4_handle_dirty_super(handle, sb);
1823 if (err) {
1824 ext4_std_error(sb, err);
1825 goto errout;
1826 }
1827
1828 if (inode) {
1829 nr = le32_to_cpu(ei->i_data[EXT4_DIND_BLOCK]);
^^^^^^^^^^
Null deref. Perhaps inode implies EXT4_FEATURE_COMPAT_RESIZE_INODE?
1830 ext4_free_blocks(handle, inode, NULL, nr, 1,
1831 EXT4_FREE_BLOCKS_METADATA |
1832 EXT4_FREE_BLOCKS_FORGET);
1833 ei->i_data[EXT4_DIND_BLOCK] = 0;
1834 inode->i_blocks = 0;
1835
1836 err = ext4_mark_inode_dirty(handle, inode);
1837 if (err)
1838 ext4_std_error(sb, err);
1839 }
regards,
dan carpenter
WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@oracle.com>
To: tytso@mit.edu
Cc: linux-ext4@vger.kernel.org, kernel-janitors@vger.kernel.org,
Fengguang Wu <fengguang.wu@intel.com>
Subject: re: ext4: convert file system to meta_bg if needed during resizing
Date: Tue, 18 Sep 2012 14:46:35 +0300 [thread overview]
Message-ID: <20120918114634.GA12383@elgon.mountain> (raw)
Hello Theodore Ts'o,
The patch 1c6bd7173d66: "ext4: convert file system to meta_bg if
needed during resizing" from Sep 13, 2012, leads to the following
warning:
fs/ext4/resize.c:1829 ext4_convert_meta_bg()
error: potential NULL dereference 'ei'.
1770 static int ext4_convert_meta_bg(struct super_block *sb, struct inode *inode)
1771 {
1772 handle_t *handle;
1773 struct ext4_sb_info *sbi = EXT4_SB(sb);
1774 struct ext4_super_block *es = sbi->s_es;
1775 struct ext4_inode_info *ei = 0;
^^^^^^
Sparse is going to complain. Not sure why Fengguang hasn't emailed you.
1776 ext4_fsblk_t nr;
1777 int i, ret, err = 0;
1778 int credits = 1;
1779
1780 ext4_msg(sb, KERN_INFO, "Converting file system to meta_bg");
1781 if (EXT4_HAS_COMPAT_FEATURE(sb, EXT4_FEATURE_COMPAT_RESIZE_INODE)) {
1782 if (es->s_reserved_gdt_blocks) {
1783 ext4_error(sb, "Unexpected non-zero "
1784 "s_reserved_gdt_blocks");
1785 return -EPERM;
1786 }
1787 if (!inode) {
1788 ext4_error(sb, "Unexpected NULL resize_inode");
1789 return -EPERM;
1790 }
1791 ei = EXT4_I(inode);
^^^^^^^^^^^^^^^^^^
We only set "ei" if EXT4_FEATURE_COMPAT_RESIZE_INODE.
1792
1793 /* Do a quick sanity check of the resize inode */
1794 if (inode->i_blocks != 1 << (inode->i_blkbits - 9))
1795 goto invalid_resize_inode;
1796 for (i = 0; i < EXT4_N_BLOCKS; i++) {
1797 if (i == EXT4_DIND_BLOCK) {
1798 if (ei->i_data[i])
1799 continue;
1800 else
1801 goto invalid_resize_inode;
1802 }
1803 if (ei->i_data[i])
1804 goto invalid_resize_inode;
1805 }
1806 credits += 3; /* block bitmap, bg descriptor, resize inode */
1807 }
1808
1809 handle = ext4_journal_start_sb(sb, credits);
1810 if (IS_ERR(handle))
1811 return PTR_ERR(handle);
1812
1813 err = ext4_journal_get_write_access(handle, sbi->s_sbh);
1814 if (err)
1815 goto errout;
1816
1817 EXT4_CLEAR_COMPAT_FEATURE(sb, EXT4_FEATURE_COMPAT_RESIZE_INODE);
1818 EXT4_SET_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_META_BG);
1819 sbi->s_es->s_first_meta_bg =
1820 cpu_to_le32(num_desc_blocks(sb, sbi->s_groups_count));
1821
1822 err = ext4_handle_dirty_super(handle, sb);
1823 if (err) {
1824 ext4_std_error(sb, err);
1825 goto errout;
1826 }
1827
1828 if (inode) {
1829 nr = le32_to_cpu(ei->i_data[EXT4_DIND_BLOCK]);
^^^^^^^^^^
Null deref. Perhaps inode implies EXT4_FEATURE_COMPAT_RESIZE_INODE?
1830 ext4_free_blocks(handle, inode, NULL, nr, 1,
1831 EXT4_FREE_BLOCKS_METADATA |
1832 EXT4_FREE_BLOCKS_FORGET);
1833 ei->i_data[EXT4_DIND_BLOCK] = 0;
1834 inode->i_blocks = 0;
1835
1836 err = ext4_mark_inode_dirty(handle, inode);
1837 if (err)
1838 ext4_std_error(sb, err);
1839 }
regards,
dan carpenter
next reply other threads:[~2012-09-18 11:46 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-18 11:46 Dan Carpenter [this message]
2012-09-18 11:46 ` ext4: convert file system to meta_bg if needed during resizing Dan Carpenter
2012-09-18 11:52 ` Fengguang Wu
2012-09-18 11:52 ` Fengguang Wu
2012-09-19 3:51 ` Theodore Ts'o
2012-09-19 3:51 ` Theodore Ts'o
2012-09-19 4:56 ` [PATCH] ext4: fix online resizing when the # of block groups is constant Theodore Ts'o
-- strict thread matches above, loose matches on Subject: below --
2020-02-29 0:39 ext4: convert file system to meta_bg if needed during resizing Colin Ian King
2020-02-29 17:42 ` Theodore Y. Ts'o
2020-02-29 17:52 ` Colin Ian King
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=20120918114634.GA12383@elgon.mountain \
--to=dan.carpenter@oracle.com \
--cc=fengguang.wu@intel.com \
--cc=kernel-janitors@vger.kernel.org \
--cc=linux-ext4@vger.kernel.org \
--cc=tytso@mit.edu \
/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.