On Mon, 2010-06-07 at 11:53 -0700, Linus Torvalds wrote:
On Mon, 7 Jun 2010, Al Viro wrote:
Ho-hum... Speaking of which, what about leak fixes? There's a long-standing in-core inode leak in jffs2; basically, if you fail directory modification in symlink() et.al., you get a leaked inode and whinge at umount. Found after -rc1, had been there since all the way back (similar bug in creat() had been fixed in 2003, mkdir()/mknod()/symlink() were not). Fix sits in jffs2-fixes now...
I think a leak that is trivial easily falls under "security issue" as a potential DoS issue.
On the other hand, if it's not trivially fixed (say it needs big re-organizing of some locking or refcounting or whatever), and it's a really slow leak of a pretty small data structure, and is not triggered by normal users (say, you need to mount a filesystem or it needs some very specific timing), I think it falls under "we haven't seen in the previous five years, we might as well make sure the fix is tested in the next merge window".
So I think it's a judgement call.
The fix is fairly trivial. There's a "big" patch to fs/jffs2/dir.c which accounts for the bulk of my pull request, but if you look harder you'll see it's mostly just a bunch of removing 'return ret;' and adding 'goto fail;' so the error cleanup happens properly.
Al pointed out a second problem at the same time, fixed by commit e72e6497 in the tree I asked you to pull. That involved adding an unlock_new_inode() to the same error paths that the first patch used.
Between the two bugs, I figured it was worth pushing the fixes for 2.6.35.
The third jffs2 patch in that tree is a fix for ctime semantics which is a two-liner. Again not a regression but worth fixing, and -stable fodder.
Al also pointed out that I could use iget_failed(), but I figured that cleanup could wait for 2.6.36.
I seem to have a jffs2 pull request that I haven't yet processed, exactly because it wasn't clear. It's much bigger than I would have wished for, and it's not clear it's all regressions at all.
DavidW? It's
7 files changed, 107 insertions(+), 91 deletions(-)
and while that's in the size range that I didn't just reject it like the drm pull, I still do want to know if that's really just true major bugfixes and regressions.
Documentation/DocBook/mtdnand.tmpl | 2 +- drivers/mtd/mtdchar.c | 11 +-- drivers/mtd/nand/Kconfig | 21 +++--- drivers/mtd/nand/r852.c | 27 +++++--- fs/jffs2/acl.c | 3 +- fs/jffs2/dir.c | 127 +++++++++++++++++++----------------- fs/jffs2/fs.c | 7 ++- 7 files changed, 107 insertions(+), 91 deletions(-)
The patches to r852 are fixing the fact that suspend/resume wasn't working. Not strictly a regression, as it's a new driver in 2.6.35 -- but I judged that it was best to fix it.
The Kconfig patch fixes a problem with the menu nesting, introduced with the SmartMedia support. That one is a regression.
I'll concede that I could probably have lived without the DocBook patch, and the patch to use memdup_user() in mtdchar.c, but they're so trivial that it seemed pointless rebasing the tree to exclude them once I concluded I should to try my luck at getting the other stuff into -rc2.