<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/ext4/xattr.c, branch linux-3.17.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.17.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.17.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2014-11-14T18:10:30Z</updated>
<entry>
<title>ext4: Replace open coded mdata csum feature to helper function</title>
<updated>2014-11-14T18:10:30Z</updated>
<author>
<name>Dmitry Monakhov</name>
</author>
<published>2014-10-13T07:36:16Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2b3b37b28739a07d9daf8a5e8d2415cbc4df1022'/>
<id>urn:sha1:2b3b37b28739a07d9daf8a5e8d2415cbc4df1022</id>
<content type='text'>
commit 9aa5d32ba269bec0e7eaba2697a986a7b0bc8528 upstream.

Besides the fact that this replacement improves code readability
it also protects from errors caused direct EXT4_S(sb)-&gt;s_es manipulation
which may result attempt to use uninitialized  csum machinery.

#Testcase_BEGIN
IMG=/dev/ram0
MNT=/mnt
mkfs.ext4 $IMG
mount $IMG $MNT
#Enable feature directly on disk, on mounted fs
tune2fs -O metadata_csum  $IMG
# Provoke metadata update, likey result in OOPS
touch $MNT/test
umount $MNT
#Testcase_END

# Replacement script
@@
expression E;
@@
- EXT4_HAS_RO_COMPAT_FEATURE(E, EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)
+ ext4_has_metadata_csum(E)

https://bugzilla.kernel.org/show_bug.cgi?id=82201

Signed-off-by: Dmitry Monakhov &lt;dmonakhov@openvz.org&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>ext4: check EA value offset when loading</title>
<updated>2014-11-14T18:10:30Z</updated>
<author>
<name>Darrick J. Wong</name>
</author>
<published>2014-09-16T18:34:59Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f13b1f78f3ac1011f087e0ce46f365c2f060038a'/>
<id>urn:sha1:f13b1f78f3ac1011f087e0ce46f365c2f060038a</id>
<content type='text'>
commit a0626e75954078cfacddb00a4545dde821170bc5 upstream.

When loading extended attributes, check each entry's value offset to
make sure it doesn't collide with the entries.

Without this check it is easy to crash the kernel by mounting a
malicious FS containing a file with an EA wherein e_value_offs = 0 and
e_value_size &gt; 0 and then deleting the EA, which corrupts the name
list.

(See the f_ea_value_crash test's FS image in e2fsprogs for an example.)

Signed-off-by: Darrick J. Wong &lt;darrick.wong@oracle.com&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>ext4: add missing BUFFER_TRACE before ext4_journal_get_write_access</title>
<updated>2014-05-13T02:06:43Z</updated>
<author>
<name>liang xie</name>
</author>
<published>2014-05-13T02:06:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5d60125530b0122f5a0a57481f3064a6250365dd'/>
<id>urn:sha1:5d60125530b0122f5a0a57481f3064a6250365dd</id>
<content type='text'>
Make them more consistently

Signed-off-by: xieliang &lt;xieliang@xiaomi.com&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
</content>
</entry>
<entry>
<title>ext4: remove unnecessary double parentheses</title>
<updated>2014-05-12T16:55:07Z</updated>
<author>
<name>Lukas Czerner</name>
</author>
<published>2014-05-12T16:55:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c8b459f492cbe8be26d8eac0489ef627ed355947'/>
<id>urn:sha1:c8b459f492cbe8be26d8eac0489ef627ed355947</id>
<content type='text'>
Signed-off-by: Lukas Czerner &lt;lczerner@redhat.com&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
</content>
</entry>
<entry>
<title>ext4: avoid unneeded lookup when xattr name is invalid</title>
<updated>2014-05-12T13:57:59Z</updated>
<author>
<name>Zhang Zhen</name>
</author>
<published>2014-05-12T13:57:59Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=230b8c1a7b388ac5e06549a7dbe083568875804e'/>
<id>urn:sha1:230b8c1a7b388ac5e06549a7dbe083568875804e</id>
<content type='text'>
In ext4_xattr_set_handle() we have checked the xattr name's length. So
we should also check it in ext4_xattr_get() to avoid unneeded lookup
caused by invalid name.

Signed-off-by: Zhang Zhen &lt;zhenzhang.zhang@huawei.com&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
</content>
</entry>
<entry>
<title>ext4: fix jbd2 warning under heavy xattr load</title>
<updated>2014-04-07T14:54:21Z</updated>
<author>
<name>Jan Kara</name>
</author>
<published>2014-04-07T14:54:21Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ec4cb1aa2b7bae18dd8164f2e9c7c51abcf61280'/>
<id>urn:sha1:ec4cb1aa2b7bae18dd8164f2e9c7c51abcf61280</id>
<content type='text'>
When heavily exercising xattr code the assertion that
jbd2_journal_dirty_metadata() shouldn't return error was triggered:

WARNING: at /srv/autobuild-ceph/gitbuilder.git/build/fs/jbd2/transaction.c:1237
jbd2_journal_dirty_metadata+0x1ba/0x260()

CPU: 0 PID: 8877 Comm: ceph-osd Tainted: G    W 3.10.0-ceph-00049-g68d04c9 #1
Hardware name: Dell Inc. PowerEdge R410/01V648, BIOS 1.6.3 02/07/2011
 ffffffff81a1d3c8 ffff880214469928 ffffffff816311b0 ffff880214469968
 ffffffff8103fae0 ffff880214469958 ffff880170a9dc30 ffff8802240fbe80
 0000000000000000 ffff88020b366000 ffff8802256e7510 ffff880214469978
Call Trace:
 [&lt;ffffffff816311b0&gt;] dump_stack+0x19/0x1b
 [&lt;ffffffff8103fae0&gt;] warn_slowpath_common+0x70/0xa0
 [&lt;ffffffff8103fb2a&gt;] warn_slowpath_null+0x1a/0x20
 [&lt;ffffffff81267c2a&gt;] jbd2_journal_dirty_metadata+0x1ba/0x260
 [&lt;ffffffff81245093&gt;] __ext4_handle_dirty_metadata+0xa3/0x140
 [&lt;ffffffff812561f3&gt;] ext4_xattr_release_block+0x103/0x1f0
 [&lt;ffffffff81256680&gt;] ext4_xattr_block_set+0x1e0/0x910
 [&lt;ffffffff8125795b&gt;] ext4_xattr_set_handle+0x38b/0x4a0
 [&lt;ffffffff810a319d&gt;] ? trace_hardirqs_on+0xd/0x10
 [&lt;ffffffff81257b32&gt;] ext4_xattr_set+0xc2/0x140
 [&lt;ffffffff81258547&gt;] ext4_xattr_user_set+0x47/0x50
 [&lt;ffffffff811935ce&gt;] generic_setxattr+0x6e/0x90
 [&lt;ffffffff81193ecb&gt;] __vfs_setxattr_noperm+0x7b/0x1c0
 [&lt;ffffffff811940d4&gt;] vfs_setxattr+0xc4/0xd0
 [&lt;ffffffff8119421e&gt;] setxattr+0x13e/0x1e0
 [&lt;ffffffff811719c7&gt;] ? __sb_start_write+0xe7/0x1b0
 [&lt;ffffffff8118f2e8&gt;] ? mnt_want_write_file+0x28/0x60
 [&lt;ffffffff8118c65c&gt;] ? fget_light+0x3c/0x130
 [&lt;ffffffff8118f2e8&gt;] ? mnt_want_write_file+0x28/0x60
 [&lt;ffffffff8118f1f8&gt;] ? __mnt_want_write+0x58/0x70
 [&lt;ffffffff811946be&gt;] SyS_fsetxattr+0xbe/0x100
 [&lt;ffffffff816407c2&gt;] system_call_fastpath+0x16/0x1b

The reason for the warning is that buffer_head passed into
jbd2_journal_dirty_metadata() didn't have journal_head attached. This is
caused by the following race of two ext4_xattr_release_block() calls:

CPU1                                CPU2
ext4_xattr_release_block()          ext4_xattr_release_block()
lock_buffer(bh);
/* False */
if (BHDR(bh)-&gt;h_refcount == cpu_to_le32(1))
} else {
  le32_add_cpu(&amp;BHDR(bh)-&gt;h_refcount, -1);
  unlock_buffer(bh);
                                    lock_buffer(bh);
                                    /* True */
                                    if (BHDR(bh)-&gt;h_refcount == cpu_to_le32(1))
                                      get_bh(bh);
                                      ext4_free_blocks()
                                        ...
                                        jbd2_journal_forget()
                                          jbd2_journal_unfile_buffer()
                                          -&gt; JH is gone
  error = ext4_handle_dirty_xattr_block(handle, inode, bh);
  -&gt; triggers the warning

We fix the problem by moving ext4_handle_dirty_xattr_block() under the
buffer lock. Sadly this cannot be done in nojournal mode as that
function can call sync_dirty_buffer() which would deadlock. Luckily in
nojournal mode the race is harmless (we only dirty already freed buffer)
and thus for nojournal mode we leave the dirtying outside of the buffer
lock.

Reported-by: Sage Weil &lt;sage@inktank.com&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Cc: stable@vger.kernel.org
</content>
</entry>
<entry>
<title>ext4: each filesystem creates and uses its own mb_cache</title>
<updated>2014-03-18T23:24:49Z</updated>
<author>
<name>T Makphaibulchoke</name>
</author>
<published>2014-03-18T23:24:49Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9c191f701ce9f9bc604e88a5dc69cd943daa5d3b'/>
<id>urn:sha1:9c191f701ce9f9bc604e88a5dc69cd943daa5d3b</id>
<content type='text'>
This patch adds new interfaces to create and destory cache,
ext4_xattr_create_cache() and ext4_xattr_destroy_cache(), and remove
the cache creation and destory calls from ex4_init_xattr() and
ext4_exitxattr() in fs/ext4/xattr.c.

fs/ext4/super.c has been changed so that when a filesystem is mounted
a cache is allocated and attched to its ext4_sb_info structure.

fs/mbcache.c has been changed so that only one slab allocator is
allocated and used by all mbcache structures.

Signed-off-by: T. Makphaibulchoke &lt;tmac@hp.com&gt;
</content>
</entry>
<entry>
<title>ext4: don't calculate total xattr header size unless needed</title>
<updated>2014-02-20T01:15:21Z</updated>
<author>
<name>Theodore Ts'o</name>
</author>
<published>2014-02-20T01:15:21Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7b1b2c1b9c397dcb86293ae79aa7fb7c5446120f'/>
<id>urn:sha1:7b1b2c1b9c397dcb86293ae79aa7fb7c5446120f</id>
<content type='text'>
The function ext4_expand_extra_isize_ea() doesn't need the size of all
of the extended attribute headers.  So if we don't calculate it when
it is unneeded, it we can skip some undeeded memory references, and as
a bonus, we eliminate some kvetching by static code analysis tools.

Addresses-Coverity-Id: #741291

Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
</content>
</entry>
<entry>
<title>ext2/3/4: use generic posix ACL infrastructure</title>
<updated>2014-01-26T04:58:19Z</updated>
<author>
<name>Christoph Hellwig</name>
</author>
<published>2013-12-20T13:16:44Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=64e178a7118b1cf7648391755e44dcc209091003'/>
<id>urn:sha1:64e178a7118b1cf7648391755e44dcc209091003</id>
<content type='text'>
Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Reviewed-by: Jan Kara &lt;jack@suse.cz&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>ext4: avoid bh leak in retry path of ext4_expand_extra_isize_ea()</title>
<updated>2013-11-01T03:00:24Z</updated>
<author>
<name>Theodore Ts'o</name>
</author>
<published>2013-11-01T03:00:24Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=dcb9917ba041866686fe152850364826c4622a36'/>
<id>urn:sha1:dcb9917ba041866686fe152850364826c4622a36</id>
<content type='text'>
Reported-by: Dave Jones &lt;davej@redhat.com&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Cc: stable@vger.kernel.org
</content>
</entry>
</feed>
