<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/fs, branch v3.3</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/fs?h=v3.3</id>
<link rel='self' href='https://git.amat.us/linux/atom/fs?h=v3.3'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2012-03-18T19:25:04Z</updated>
<entry>
<title>Don't limit non-nested epoll paths</title>
<updated>2012-03-18T19:25:04Z</updated>
<author>
<name>Jason Baron</name>
<email>jbaron@redhat.com</email>
</author>
<published>2012-03-16T20:34:03Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=93dc6107a76daed81c07f50215fa6ae77691634f'/>
<id>urn:sha1:93dc6107a76daed81c07f50215fa6ae77691634f</id>
<content type='text'>
Commit 28d82dc1c4ed ("epoll: limit paths") that I did to limit the
number of possible wakeup paths in epoll is causing a few applications
to longer work (dovecot for one).

The original patch is really about limiting the amount of epoll nesting
(since epoll fds can be attached to other fds). Thus, we probably can
allow an unlimited number of paths of depth 1. My current patch limits
it at 1000. And enforce the limits on paths that have a greater depth.

This is captured in: https://bugzilla.redhat.com/show_bug.cgi?id=681578

Signed-off-by: Jason Baron &lt;jbaron@redhat.com&gt;
Cc: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>Merge branch 'akpm' (more patches from Andrew)</title>
<updated>2012-03-17T00:14:55Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2012-03-17T00:14:55Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=cb1ecf25a84aec8c9d1fc6ad0c78adf4fd8335de'/>
<id>urn:sha1:cb1ecf25a84aec8c9d1fc6ad0c78adf4fd8335de</id>
<content type='text'>
Merge some more email patches from Andrew Morton:
 "A couple of nilfs fixes"

* emailed from Andrew Morton &lt;akpm@linux-foundation.org&gt;:
  nilfs2: fix NULL pointer dereference in nilfs_load_super_block()
  nilfs2: clamp ns_r_segments_percentage to [1, 99]
</content>
</entry>
<entry>
<title>nilfs2: fix NULL pointer dereference in nilfs_load_super_block()</title>
<updated>2012-03-17T00:14:44Z</updated>
<author>
<name>Ryusuke Konishi</name>
<email>konishi.ryusuke@lab.ntt.co.jp</email>
</author>
<published>2012-03-17T00:08:39Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d7178c79d9b7c5518f9943188091a75fc6ce0675'/>
<id>urn:sha1:d7178c79d9b7c5518f9943188091a75fc6ce0675</id>
<content type='text'>
According to the report from Slicky Devil, nilfs caused kernel oops at
nilfs_load_super_block function during mount after he shrank the
partition without resizing the filesystem:

 BUG: unable to handle kernel NULL pointer dereference at 00000048
 IP: [&lt;d0d7a08e&gt;] nilfs_load_super_block+0x17e/0x280 [nilfs2]
 *pde = 00000000
 Oops: 0000 [#1] PREEMPT SMP
 ...
 Call Trace:
  [&lt;d0d7a87b&gt;] init_nilfs+0x4b/0x2e0 [nilfs2]
  [&lt;d0d6f707&gt;] nilfs_mount+0x447/0x5b0 [nilfs2]
  [&lt;c0226636&gt;] mount_fs+0x36/0x180
  [&lt;c023d961&gt;] vfs_kern_mount+0x51/0xa0
  [&lt;c023ddae&gt;] do_kern_mount+0x3e/0xe0
  [&lt;c023f189&gt;] do_mount+0x169/0x700
  [&lt;c023fa9b&gt;] sys_mount+0x6b/0xa0
  [&lt;c04abd1f&gt;] sysenter_do_call+0x12/0x28
 Code: 53 18 8b 43 20 89 4b 18 8b 4b 24 89 53 1c 89 43 24 89 4b 20 8b 43
 20 c7 43 2c 00 00 00 00 23 75 e8 8b 50 68 89 53 28 8b 54 b3 20 &lt;8b&gt; 72
 48 8b 7a 4c 8b 55 08 89 b3 84 00 00 00 89 bb 88 00 00 00
 EIP: [&lt;d0d7a08e&gt;] nilfs_load_super_block+0x17e/0x280 [nilfs2] SS:ESP 0068:ca9bbdcc
 CR2: 0000000000000048

This turned out due to a defect in an error path which runs if the
calculated location of the secondary super block was invalid.

This patch fixes it and eliminates the reported oops.

Reported-by: Slicky Devil &lt;slicky.dvl@gmail.com&gt;
Signed-off-by: Ryusuke Konishi &lt;konishi.ryusuke@lab.ntt.co.jp&gt;
Tested-by: Slicky Devil &lt;slicky.dvl@gmail.com&gt;
Cc: &lt;stable@vger.kernel.org&gt;	[2.6.30+]
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>nilfs2: clamp ns_r_segments_percentage to [1, 99]</title>
<updated>2012-03-17T00:14:44Z</updated>
<author>
<name>Haogang Chen</name>
<email>haogangchen@gmail.com</email>
</author>
<published>2012-03-17T00:08:38Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=3d777a64066f3b9db8a94834aaed6a9cf09808fd'/>
<id>urn:sha1:3d777a64066f3b9db8a94834aaed6a9cf09808fd</id>
<content type='text'>
ns_r_segments_percentage is read from the disk.  Bogus or malicious
value could cause integer overflow and malfunction due to meaningless
disk usage calculation.  This patch reports error when mounting such
bogus volumes.

Signed-off-by: Haogang Chen &lt;haogangchen@gmail.com&gt;
Signed-off-by: Ryusuke Konishi &lt;konishi.ryusuke@lab.ntt.co.jp&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>afs: Remote abort can cause BUG in rxrpc code</title>
<updated>2012-03-17T00:01:41Z</updated>
<author>
<name>Anton Blanchard</name>
<email>anton@samba.org</email>
</author>
<published>2012-03-16T10:28:19Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c0173863528a8c9212c53e080d63a1aaae5ef4f4'/>
<id>urn:sha1:c0173863528a8c9212c53e080d63a1aaae5ef4f4</id>
<content type='text'>
When writing files to afs I sometimes hit a BUG:

kernel BUG at fs/afs/rxrpc.c:179!

With a backtrace of:

	afs_free_call
	afs_make_call
	afs_fs_store_data
	afs_vnode_store_data
	afs_write_back_from_locked_page
	afs_writepages_region
	afs_writepages

The cause is:

	ASSERT(skb_queue_empty(&amp;call-&gt;rx_queue));

Looking at a tcpdump of the session the abort happens because we
are exceeding our disk quota:

	rx abort fs reply store-data error diskquota exceeded (32)

So the abort error is valid. We hit the BUG because we haven't
freed all the resources for the call.

By freeing any skbs in call-&gt;rx_queue before calling afs_free_call
we avoid hitting leaking memory and avoid hitting the BUG.

Signed-off-by: Anton Blanchard &lt;anton@samba.org&gt;
Signed-off-by: David Howells &lt;dhowells@redhat.com&gt;
Cc: &lt;stable@kernel.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>afs: Read of file returns EBADMSG</title>
<updated>2012-03-17T00:01:41Z</updated>
<author>
<name>Anton Blanchard</name>
<email>anton@samba.org</email>
</author>
<published>2012-03-16T10:28:07Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2c724fb92732c0b2a5629eb8af74e82eb62ac947'/>
<id>urn:sha1:2c724fb92732c0b2a5629eb8af74e82eb62ac947</id>
<content type='text'>
A read of a large file on an afs mount failed:

# cat junk.file &gt; /dev/null
cat: junk.file: Bad message

Looking at the trace, call-&gt;offset wrapped since it is only an
unsigned short. In afs_extract_data:

        _enter("{%u},{%zu},%d,,%zu", call-&gt;offset, len, last, count);
...

        if (call-&gt;offset &lt; count) {
                if (last) {
                        _leave(" = -EBADMSG [%d &lt; %zu]", call-&gt;offset, count);
                        return -EBADMSG;
                }

Which matches the trace:

[cat   ] ==&gt; afs_extract_data({65132},{524},1,,65536)
[cat   ] &lt;== afs_extract_data() = -EBADMSG [0 &lt; 65536]

call-&gt;offset went from 65132 to 0. Fix this by making call-&gt;offset an
unsigned int.

Signed-off-by: Anton Blanchard &lt;anton@samba.org&gt;
Signed-off-by: David Howells &lt;dhowells@redhat.com&gt;
Cc: &lt;stable@kernel.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>Merge branch 'for-linus' of git://git.kernel.dk/linux-block</title>
<updated>2012-03-15T00:16:45Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2012-03-15T00:16:45Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f1cbd03f5eabb75ea8ace23b47d2209f10871c16'/>
<id>urn:sha1:f1cbd03f5eabb75ea8ace23b47d2209f10871c16</id>
<content type='text'>
Pull block fixes from Jens Axboe:
 "Been sitting on this for a while, but lets get this out the door.
  This fixes various important bugs for 3.3 final, along with a few more
  trivial ones.  Please pull!"

* 'for-linus' of git://git.kernel.dk/linux-block:
  block: fix ioc leak in put_io_context
  block, sx8: fix pointer math issue getting fw version
  Block: use a freezable workqueue for disk-event polling
  drivers/block/DAC960: fix -Wuninitialized warning
  drivers/block/DAC960: fix DAC960_V2_IOCTL_Opcode_T -Wenum-compare warning
  block: fix __blkdev_get and add_disk race condition
  block: Fix setting bio flags in drivers (sd_dif/floppy)
  block: Fix NULL pointer dereference in sd_revalidate_disk
  block: exit_io_context() should call elevator_exit_icq_fn()
  block: simplify ioc_release_fn()
  block: replace icq-&gt;changed with icq-&gt;flags
</content>
</entry>
<entry>
<title>Merge git://git.samba.org/sfrench/cifs-2.6</title>
<updated>2012-03-14T00:03:53Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2012-03-14T00:03:53Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=8e8bb96d247fc67eb66a2ebcc6fd45787b5a8b15'/>
<id>urn:sha1:8e8bb96d247fc67eb66a2ebcc6fd45787b5a8b15</id>
<content type='text'>
Pull CIFS fixes from Steve French.

* git://git.samba.org/sfrench/cifs-2.6:
  CIFS: Do not kmalloc under the flocks spinlock
  cifs: possible memory leak in xattr.
</content>
</entry>
<entry>
<title>restore smp_mb() in unlock_new_inode()</title>
<updated>2012-03-10T22:07:28Z</updated>
<author>
<name>Al Viro</name>
<email>viro@zeniv.linux.org.uk</email>
</author>
<published>2012-03-10T22:07:28Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=310fa7a36722017088af123043ebd231cd6bc559'/>
<id>urn:sha1:310fa7a36722017088af123043ebd231cd6bc559</id>
<content type='text'>
wait_on_inode() doesn't have -&gt;i_lock

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>vfs: fix return value from do_last()</title>
<updated>2012-03-10T22:05:30Z</updated>
<author>
<name>Miklos Szeredi</name>
<email>mszeredi@suse.cz</email>
</author>
<published>2012-03-06T12:56:34Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=7f6c7e62fcc123e6bd9206da99a2163fe3facc31'/>
<id>urn:sha1:7f6c7e62fcc123e6bd9206da99a2163fe3facc31</id>
<content type='text'>
complete_walk() returns either ECHILD or ESTALE.  do_last() turns this into
ECHILD unconditionally.  If not in RCU mode, this error will reach userspace
which is complete nonsense.

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
CC: stable@vger.kernel.org
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
</feed>
