<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/dquot.c, branch linux-2.6.28.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.28.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.28.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2009-05-02T17:56:44Z</updated>
<entry>
<title>vfs: skip I_CLEAR state inodes</title>
<updated>2009-05-02T17:56:44Z</updated>
<author>
<name>Wu Fengguang</name>
</author>
<published>2009-04-03T04:35:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6f34347a7993c9b9c1b4f131801937ec0284e016'/>
<id>urn:sha1:6f34347a7993c9b9c1b4f131801937ec0284e016</id>
<content type='text'>
upstream commit: b6fac63cc1f52ec27f29fe6c6c8494a2ffac33fd

clear_inode() will switch inode state from I_FREEING to I_CLEAR, and do so
_outside_ of inode_lock.  So any I_FREEING testing is incomplete without a
coupled testing of I_CLEAR.

So add I_CLEAR tests to drop_pagecache_sb(), generic_sync_sb_inodes() and
add_dquot_ref().

Masayoshi MIZUMA discovered the bug in drop_pagecache_sb() and Jan Kara
reminds fixing the other two cases.

Masayoshi MIZUMA has a nice panic flow:

=====================================================================
            [process A]               |        [process B]
 |                                    |
 |    prune_icache()                  | drop_pagecache()
 |      spin_lock(&amp;inode_lock)        |   drop_pagecache_sb()
 |      inode-&gt;i_state |= I_FREEING;  |       |
 |      spin_unlock(&amp;inode_lock)      |       V
 |          |                         |     spin_lock(&amp;inode_lock)
 |          V                         |         |
 |      dispose_list()                |         |
 |        list_del()                  |         |
 |        clear_inode()               |         |
 |          inode-&gt;i_state = I_CLEAR  |         |
 |            |                       |         V
 |            |                       |      if (inode-&gt;i_state &amp; (I_FREEING|I_WILL_FREE))
 |            |                       |              continue;           &lt;==== NOT MATCH
 |            |                       |
 |            |                       | (DANGER from here on! Accessing disposing inode!)
 |            |                       |
 |            |                       |      __iget()
 |            |                       |        list_move() &lt;===== PANIC on poisoned list !!
 V            V                       |
(time)
=====================================================================

Reported-by: Masayoshi MIZUMA &lt;m.mizuma@jp.fujitsu.com&gt;
Reviewed-by: Jan Kara &lt;jack@suse.cz&gt;
Signed-off-by: Wu Fengguang &lt;fengguang.wu@intel.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
[chrisw: backport to 2.6.29]
Signed-off-by: Chris Wright &lt;chrisw@sous-sol.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
<entry>
<title>[PATCH] switch quota_on-related stuff to kern_path()</title>
<updated>2008-10-23T09:12:44Z</updated>
<author>
<name>Al Viro</name>
</author>
<published>2008-08-02T04:57:06Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8264613def2e5c4f12bc3167713090fd172e6055'/>
<id>urn:sha1:8264613def2e5c4f12bc3167713090fd172e6055</id>
<content type='text'>
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>quota: remove CVS keywords</title>
<updated>2008-10-16T18:21:46Z</updated>
<author>
<name>Adrian Bunk</name>
</author>
<published>2008-10-16T05:04:13Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b73c29f6b0ddbcf07b43c5c5e6354e5839b5e68d'/>
<id>urn:sha1:b73c29f6b0ddbcf07b43c5c5e6354e5839b5e68d</id>
<content type='text'>
Remove CVS keywords that weren't updated for a long time from comments.

Signed-off-by: Adrian Bunk &lt;bunk@kernel.org&gt;
Acked-by: Jan Kara &lt;jack@suse.cz&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>tty: Redo current tty locking</title>
<updated>2008-10-13T16:51:41Z</updated>
<author>
<name>Alan Cox</name>
</author>
<published>2008-10-13T09:40:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=934e6ebf96e8c1a0f299e64129fdaebc1132a427'/>
<id>urn:sha1:934e6ebf96e8c1a0f299e64129fdaebc1132a427</id>
<content type='text'>
Currently it is sometimes locked by the tty mutex and sometimes by the
sighand lock. The latter is in fact correct and now we can hand back referenced
objects we can fix this up without problems around sleeping functions.

Signed-off-by: Alan Cox &lt;alan@redhat.com&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>tty: Make get_current_tty use a kref</title>
<updated>2008-10-13T16:51:41Z</updated>
<author>
<name>Alan Cox</name>
</author>
<published>2008-10-13T09:39:13Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=452a00d2ee288f2cbc36f676edd06cb14d2878c1'/>
<id>urn:sha1:452a00d2ee288f2cbc36f676edd06cb14d2878c1</id>
<content type='text'>
We now return a kref covered tty reference. That ensures the tty structure
doesn't go away when you have a return from get_current_tty. This is not
enough to protect you from most of the resources being freed behind your
back - yet.

[Updated to include fixes for SELinux problems found by Andrew Morton and
 an s390 leak found while debugging the former]

Signed-off-by: Alan Cox &lt;alan@redhat.com&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] fix races and leaks in vfs_quota_on() users</title>
<updated>2008-08-01T15:25:25Z</updated>
<author>
<name>Al Viro</name>
</author>
<published>2008-08-01T08:29:18Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=77e69dac3cefacee939cb107ae9cd520a62338e0'/>
<id>urn:sha1:77e69dac3cefacee939cb107ae9cd520a62338e0</id>
<content type='text'>
* new helper: vfs_quota_on_path(); equivalent of vfs_quota_on() sans the
  pathname resolution.
* callers of vfs_quota_on() that do their own pathname resolution and
  checks based on it are switched to vfs_quota_on_path(); that way we
  avoid the races.
* reiserfs leaked dentry/vfsmount references on several failure exits.

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>quota: implement sending information via netlink about user below quota</title>
<updated>2008-07-25T17:53:35Z</updated>
<author>
<name>Jan Kara</name>
</author>
<published>2008-07-25T08:46:52Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=657d3bfa98e542271b449f8cd84c7501ae2b2255'/>
<id>urn:sha1:657d3bfa98e542271b449f8cd84c7501ae2b2255</id>
<content type='text'>
Sometimes it may be useful for userspace to know (e.g.  for some hosting
guys) that some user stopped exceeding his hardlimit or softlimit in
quotas.  Implement sending of such events to userspace via quota netlink
protocol so that they don't have to poll for such events.  Based on idea
and initial implementation by Vladislav Bogdanov.

Cc: Vladislav Bogdanov &lt;slava@nsys.by&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&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>quota: rename quota functions from upper case, make bigger ones non-inline</title>
<updated>2008-07-25T17:53:35Z</updated>
<author>
<name>Jan Kara</name>
</author>
<published>2008-07-25T08:46:50Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b85f4b87a511bea86dac68c4f0fabaee2cac6c4c'/>
<id>urn:sha1:b85f4b87a511bea86dac68c4f0fabaee2cac6c4c</id>
<content type='text'>
Cleanup quotaops.h: Rename functions from uppercase to lowercase (and
define backward compatibility macros), move larger functions to dquot.c
and make them non-inline.

Signed-off-by: Jan Kara &lt;jack@suse.cz&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>quota: fix possible infinite loop in quota code</title>
<updated>2008-07-25T17:53:34Z</updated>
<author>
<name>Jan Kara</name>
</author>
<published>2008-07-25T08:46:49Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b48d380541f634663b71766005838edbb7261685'/>
<id>urn:sha1:b48d380541f634663b71766005838edbb7261685</id>
<content type='text'>
When quota structure is going to be dropped and it is dirty, quota code tries
to write it.  If the write fails for some reason (e.  g.  transaction cannot
be started because the journal is aborted), we try writing again and again and
again...  Fix the problem by clearing the dirty bit even if the write failed.

(akpm: for 2.6.27, 2.6.26.x and 2.6.25.x)

Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
Reviewed-by: dingdinghua &lt;dingdinghua85@gmail.com&gt;
Cc: &lt;stable@kernel.org&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>quota: don't call sync_fs() from vfs_quota_off() when there's no quota turn off</title>
<updated>2008-05-13T15:02:23Z</updated>
<author>
<name>Jan Kara</name>
</author>
<published>2008-05-12T21:02:08Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9377abd026bf9bde7db90dac09170034bf6d1cbf'/>
<id>urn:sha1:9377abd026bf9bde7db90dac09170034bf6d1cbf</id>
<content type='text'>
Sometimes, vfs_quota_off() is called on a partially set up super block (for
example when fill_super() fails for some reason).  In such cases we cannot
call -&gt;sync_fs() because it can Oops because of not properly filled in super
block.  So in case we find there's not quota to turn off, we just skip
everything and return which fixes the above problem.

[akpm@linux-foundation.org: fxi tpyo]
Signed-off-by: Jan Kara &lt;jack@suse.cz&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>
</feed>
