<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/fs/udf, branch v2.6.27</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>udf: add llseek method</title>
<updated>2008-09-08T18:31:04+00:00</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@lst.de</email>
</author>
<published>2008-09-08T17:44:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=5c89468c12899b84886cb47eec93f0c88e0f896a'/>
<id>5c89468c12899b84886cb47eec93f0c88e0f896a</id>
<content type='text'>
UDF currently doesn't set a llseek method for regular files, which
means it will fall back to default_llseek.  This means no one can seek
beyond 2 Gigabytes on udf, and that there's not protection vs
the i_size updates from writers.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
UDF currently doesn't set a llseek method for regular files, which
means it will fall back to default_llseek.  This means no one can seek
beyond 2 Gigabytes on udf, and that there's not protection vs
the i_size updates from writers.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>udf: Fix error paths in udf_new_inode()</title>
<updated>2008-08-19T09:05:05+00:00</updated>
<author>
<name>Jan Kara</name>
<email>jack@suse.cz</email>
</author>
<published>2008-08-18T11:44:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=97e1cfb08616987878f91a46cefdd7fc5fa3dba1'/>
<id>97e1cfb08616987878f91a46cefdd7fc5fa3dba1</id>
<content type='text'>
I case we failed to allocate memory for inode when creating it, we did not
properly free block already allocated for this inode. Move memory allocation
before the block allocation which fixes this issue (thanks for the idea go to
Ingo Oeser &lt;ioe-lkml@rameria.de&gt;). Also remove a few superfluous
initializations already done in udf_alloc_inode().

Reviewed-by: Ingo Oeser &lt;ioe-lkml@rameria.de&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I case we failed to allocate memory for inode when creating it, we did not
properly free block already allocated for this inode. Move memory allocation
before the block allocation which fixes this issue (thanks for the idea go to
Ingo Oeser &lt;ioe-lkml@rameria.de&gt;). Also remove a few superfluous
initializations already done in udf_alloc_inode().

Reviewed-by: Ingo Oeser &lt;ioe-lkml@rameria.de&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>udf: Fix lock inversion between iprune_mutex and alloc_mutex (v2)</title>
<updated>2008-08-19T09:04:36+00:00</updated>
<author>
<name>Jan Kara</name>
<email>jack@suse.cz</email>
</author>
<published>2008-08-18T11:40:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=db0badc58e948b810c7a75cfcc48845e2949ee37'/>
<id>db0badc58e948b810c7a75cfcc48845e2949ee37</id>
<content type='text'>
A memory allocation inside alloc_mutex must not recurse back into the
filesystem itself because that leads to lock inversion between iprune_mutex and
alloc_mutex (and thus to deadlocks - see traces below). alloc_mutex is actually
needed only to update allocation statistics in the superblock so we can drop it
before we start allocating memory for the inode.

tar           D ffff81015b9c8c90     0  6614   6612
 ffff8100d5a21a20 0000000000000086 0000000000000000 00000000ffff0000
 ffff81015b9c8c90 ffff81015b8f0cd0 ffff81015b9c8ee0 0000000000000000
 0000000000000003 0000000000000000 0000000000000000 0000000000000000
Call Trace:
 [&lt;ffffffff803c1d8a&gt;] __mutex_lock_slowpath+0x64/0x9b
 [&lt;ffffffff803c1bef&gt;] mutex_lock+0xa/0xb
 [&lt;ffffffff8027f8c2&gt;] shrink_icache_memory+0x38/0x200
 [&lt;ffffffff80257742&gt;] shrink_slab+0xe3/0x15b
 [&lt;ffffffff802579db&gt;] try_to_free_pages+0x221/0x30d
 [&lt;ffffffff8025657e&gt;] isolate_pages_global+0x0/0x31
 [&lt;ffffffff8025324b&gt;] __alloc_pages_internal+0x252/0x3ab
 [&lt;ffffffff8026b08b&gt;] cache_alloc_refill+0x22e/0x47b
 [&lt;ffffffff8026ae37&gt;] kmem_cache_alloc+0x3b/0x61
 [&lt;ffffffff8026b15b&gt;] cache_alloc_refill+0x2fe/0x47b
 [&lt;ffffffff8026b34e&gt;] __kmalloc+0x76/0x9c
 [&lt;ffffffffa00751f2&gt;] :udf:udf_new_inode+0x202/0x2e2
 [&lt;ffffffffa007ae5e&gt;] :udf:udf_create+0x2f/0x16d
 [&lt;ffffffffa0078f27&gt;] :udf:udf_lookup+0xa6/0xad
...
kswapd0       D ffff81015b9d9270     0   125      2
 ffff81015b903c28 0000000000000046 ffffffff8028cbb0 00000000fffffffb
 ffff81015b9d9270 ffff81015b8f0cd0 ffff81015b9d94c0 000000000271b490
 ffffe2000271b458 ffffe2000271b420 ffffe20002728dc8 ffffe20002728d90
Call Trace:
 [&lt;ffffffff8028cbb0&gt;] __set_page_dirty+0xeb/0xf5
 [&lt;ffffffff8025403a&gt;] get_dirty_limits+0x1d/0x22f
 [&lt;ffffffff803c1d8a&gt;] __mutex_lock_slowpath+0x64/0x9b
 [&lt;ffffffff803c1bef&gt;] mutex_lock+0xa/0xb
 [&lt;ffffffffa0073f58&gt;] :udf:udf_bitmap_free_blocks+0x47/0x1eb
 [&lt;ffffffffa007df31&gt;] :udf:udf_discard_prealloc+0xc6/0x172
 [&lt;ffffffffa007875a&gt;] :udf:udf_clear_inode+0x1e/0x48
 [&lt;ffffffff8027f121&gt;] clear_inode+0x6d/0xc4
 [&lt;ffffffff8027f7f2&gt;] dispose_list+0x56/0xee
 [&lt;ffffffff8027fa5a&gt;] shrink_icache_memory+0x1d0/0x200
 [&lt;ffffffff80257742&gt;] shrink_slab+0xe3/0x15b
 [&lt;ffffffff80257e93&gt;] kswapd+0x346/0x447
...

Reported-by: Tibor Tajti &lt;tibor.tajti@gmail.com&gt;
Reviewed-by: Ingo Oeser &lt;ioe-lkml@rameria.de&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A memory allocation inside alloc_mutex must not recurse back into the
filesystem itself because that leads to lock inversion between iprune_mutex and
alloc_mutex (and thus to deadlocks - see traces below). alloc_mutex is actually
needed only to update allocation statistics in the superblock so we can drop it
before we start allocating memory for the inode.

tar           D ffff81015b9c8c90     0  6614   6612
 ffff8100d5a21a20 0000000000000086 0000000000000000 00000000ffff0000
 ffff81015b9c8c90 ffff81015b8f0cd0 ffff81015b9c8ee0 0000000000000000
 0000000000000003 0000000000000000 0000000000000000 0000000000000000
Call Trace:
 [&lt;ffffffff803c1d8a&gt;] __mutex_lock_slowpath+0x64/0x9b
 [&lt;ffffffff803c1bef&gt;] mutex_lock+0xa/0xb
 [&lt;ffffffff8027f8c2&gt;] shrink_icache_memory+0x38/0x200
 [&lt;ffffffff80257742&gt;] shrink_slab+0xe3/0x15b
 [&lt;ffffffff802579db&gt;] try_to_free_pages+0x221/0x30d
 [&lt;ffffffff8025657e&gt;] isolate_pages_global+0x0/0x31
 [&lt;ffffffff8025324b&gt;] __alloc_pages_internal+0x252/0x3ab
 [&lt;ffffffff8026b08b&gt;] cache_alloc_refill+0x22e/0x47b
 [&lt;ffffffff8026ae37&gt;] kmem_cache_alloc+0x3b/0x61
 [&lt;ffffffff8026b15b&gt;] cache_alloc_refill+0x2fe/0x47b
 [&lt;ffffffff8026b34e&gt;] __kmalloc+0x76/0x9c
 [&lt;ffffffffa00751f2&gt;] :udf:udf_new_inode+0x202/0x2e2
 [&lt;ffffffffa007ae5e&gt;] :udf:udf_create+0x2f/0x16d
 [&lt;ffffffffa0078f27&gt;] :udf:udf_lookup+0xa6/0xad
...
kswapd0       D ffff81015b9d9270     0   125      2
 ffff81015b903c28 0000000000000046 ffffffff8028cbb0 00000000fffffffb
 ffff81015b9d9270 ffff81015b8f0cd0 ffff81015b9d94c0 000000000271b490
 ffffe2000271b458 ffffe2000271b420 ffffe20002728dc8 ffffe20002728d90
Call Trace:
 [&lt;ffffffff8028cbb0&gt;] __set_page_dirty+0xeb/0xf5
 [&lt;ffffffff8025403a&gt;] get_dirty_limits+0x1d/0x22f
 [&lt;ffffffff803c1d8a&gt;] __mutex_lock_slowpath+0x64/0x9b
 [&lt;ffffffff803c1bef&gt;] mutex_lock+0xa/0xb
 [&lt;ffffffffa0073f58&gt;] :udf:udf_bitmap_free_blocks+0x47/0x1eb
 [&lt;ffffffffa007df31&gt;] :udf:udf_discard_prealloc+0xc6/0x172
 [&lt;ffffffffa007875a&gt;] :udf:udf_clear_inode+0x1e/0x48
 [&lt;ffffffff8027f121&gt;] clear_inode+0x6d/0xc4
 [&lt;ffffffff8027f7f2&gt;] dispose_list+0x56/0xee
 [&lt;ffffffff8027fa5a&gt;] shrink_icache_memory+0x1d0/0x200
 [&lt;ffffffff80257742&gt;] shrink_slab+0xe3/0x15b
 [&lt;ffffffff80257e93&gt;] kswapd+0x346/0x447
...

Reported-by: Tibor Tajti &lt;tibor.tajti@gmail.com&gt;
Reviewed-by: Ingo Oeser &lt;ioe-lkml@rameria.de&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>SL*B: drop kmem cache argument from constructor</title>
<updated>2008-07-26T19:00:07+00:00</updated>
<author>
<name>Alexey Dobriyan</name>
<email>adobriyan@gmail.com</email>
</author>
<published>2008-07-26T02:45:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=51cc50685a4275c6a02653670af9f108a64e01cf'/>
<id>51cc50685a4275c6a02653670af9f108a64e01cf</id>
<content type='text'>
Kmem cache passed to constructor is only needed for constructors that are
themselves multiplexeres.  Nobody uses this "feature", nor does anybody uses
passed kmem cache in non-trivial way, so pass only pointer to object.

Non-trivial places are:
	arch/powerpc/mm/init_64.c
	arch/powerpc/mm/hugetlbpage.c

This is flag day, yes.

Signed-off-by: Alexey Dobriyan &lt;adobriyan@gmail.com&gt;
Acked-by: Pekka Enberg &lt;penberg@cs.helsinki.fi&gt;
Acked-by: Christoph Lameter &lt;cl@linux-foundation.org&gt;
Cc: Jon Tollefson &lt;kniht@linux.vnet.ibm.com&gt;
Cc: Nick Piggin &lt;nickpiggin@yahoo.com.au&gt;
Cc: Matt Mackall &lt;mpm@selenic.com&gt;
[akpm@linux-foundation.org: fix arch/powerpc/mm/hugetlbpage.c]
[akpm@linux-foundation.org: fix mm/slab.c]
[akpm@linux-foundation.org: fix ubifs]
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Kmem cache passed to constructor is only needed for constructors that are
themselves multiplexeres.  Nobody uses this "feature", nor does anybody uses
passed kmem cache in non-trivial way, so pass only pointer to object.

Non-trivial places are:
	arch/powerpc/mm/init_64.c
	arch/powerpc/mm/hugetlbpage.c

This is flag day, yes.

Signed-off-by: Alexey Dobriyan &lt;adobriyan@gmail.com&gt;
Acked-by: Pekka Enberg &lt;penberg@cs.helsinki.fi&gt;
Acked-by: Christoph Lameter &lt;cl@linux-foundation.org&gt;
Cc: Jon Tollefson &lt;kniht@linux.vnet.ibm.com&gt;
Cc: Nick Piggin &lt;nickpiggin@yahoo.com.au&gt;
Cc: Matt Mackall &lt;mpm@selenic.com&gt;
[akpm@linux-foundation.org: fix arch/powerpc/mm/hugetlbpage.c]
[akpm@linux-foundation.org: fix mm/slab.c]
[akpm@linux-foundation.org: fix ubifs]
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>udf: Fix regression in UDF anchor block detection</title>
<updated>2008-06-24T09:38:03+00:00</updated>
<author>
<name>Tomas Janousek</name>
<email>tomi@nomi.cz</email>
</author>
<published>2008-06-23T13:12:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=e8183c2452041326c95258ecc7865b6fcd91c730'/>
<id>e8183c2452041326c95258ecc7865b6fcd91c730</id>
<content type='text'>
In some cases it could happen that some block passed test in
udf_check_anchor_block() even though udf_read_tagged() refused to read it later
(e.g. because checksum was not correct).  This patch makes
udf_check_anchor_block() use udf_read_tagged() so that the checking is
stricter.

This fixes the regression (certain disks unmountable) caused by commit
423cf6dc04eb79d441bfda2b127bc4b57134b41d.

Signed-off-by: Tomas Janousek &lt;tomi@nomi.cz&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In some cases it could happen that some block passed test in
udf_check_anchor_block() even though udf_read_tagged() refused to read it later
(e.g. because checksum was not correct).  This patch makes
udf_check_anchor_block() use udf_read_tagged() so that the checking is
stricter.

This fixes the regression (certain disks unmountable) caused by commit
423cf6dc04eb79d441bfda2b127bc4b57134b41d.

Signed-off-by: Tomas Janousek &lt;tomi@nomi.cz&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>udf: restore UDFFS_DEBUG to being undefined by default</title>
<updated>2008-06-16T12:24:36+00:00</updated>
<author>
<name>Paul Collins</name>
<email>paul@burly.ondioline.org</email>
</author>
<published>2008-06-14T02:14:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=e4f3ec063421bdbcb93330e72aa3eeedb6a0d85a'/>
<id>e4f3ec063421bdbcb93330e72aa3eeedb6a0d85a</id>
<content type='text'>
Commit 706047a79725b585cf272fdefc234b31b6545c72, "udf: Fix compilation
warnings when UDF debug is on" inadvertently (I assume) enabled
debugging messages by default for UDF.  This patch disables them again.

Signed-off-by: Paul Collins &lt;paul@ondioline.org&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Commit 706047a79725b585cf272fdefc234b31b6545c72, "udf: Fix compilation
warnings when UDF debug is on" inadvertently (I assume) enabled
debugging messages by default for UDF.  This patch disables them again.

Signed-off-by: Paul Collins &lt;paul@ondioline.org&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6</title>
<updated>2008-05-08T17:48:03+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2008-05-08T17:48:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=0f1bce41fed02e45f31c2409f29e69e1fedebcdc'/>
<id>0f1bce41fed02e45f31c2409f29e69e1fedebcdc</id>
<content type='text'>
* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6:
  udf: Fix memory corruption when fs mounted with noadinicb option
  udf: Make udf exportable
  udf: fs/udf/partition.c:udf_get_pblock() mustn't be inline
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6:
  udf: Fix memory corruption when fs mounted with noadinicb option
  udf: Make udf exportable
  udf: fs/udf/partition.c:udf_get_pblock() mustn't be inline
</pre>
</div>
</content>
</entry>
<entry>
<title>udf: Fix memory corruption when fs mounted with noadinicb option</title>
<updated>2008-05-07T07:49:52+00:00</updated>
<author>
<name>Jan Kara</name>
<email>jack@ghost.suse.cz</email>
</author>
<published>2008-05-06T16:26:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=9afadc4b1fd25337003832c9a4668f9bd42cdda9'/>
<id>9afadc4b1fd25337003832c9a4668f9bd42cdda9</id>
<content type='text'>
When UDF filesystem is mounted with noadinicb mount option, it
happens that we extend an empty directory with a block. A code in
udf_add_entry() didn't count with this possibility and used
uninitialized data leading to memory and filesystem corruption.
Add a check whether file already has some extents before operating
on them.

Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When UDF filesystem is mounted with noadinicb mount option, it
happens that we extend an empty directory with a block. A code in
udf_add_entry() didn't count with this possibility and used
uninitialized data leading to memory and filesystem corruption.
Add a check whether file already has some extents before operating
on them.

Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>udf: Make udf exportable</title>
<updated>2008-05-07T07:48:23+00:00</updated>
<author>
<name>Rasmus Rohde</name>
<email>rohde@duff.dk</email>
</author>
<published>2008-04-30T15:22:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=221e583a735fc5d879d83c2a76b8ee5afcbdf146'/>
<id>221e583a735fc5d879d83c2a76b8ee5afcbdf146</id>
<content type='text'>
Cc: Christoph Hellwig &lt;hch@infradead.org&gt;
Signed-off-by: Rasmus Rohde &lt;rohde@duff.dk&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Cc: Christoph Hellwig &lt;hch@infradead.org&gt;
Signed-off-by: Rasmus Rohde &lt;rohde@duff.dk&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>fs: replace remaining __FUNCTION__ occurrences</title>
<updated>2008-04-30T15:29:54+00:00</updated>
<author>
<name>Harvey Harrison</name>
<email>harvey.harrison@gmail.com</email>
</author>
<published>2008-04-30T07:55:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=8e24eea728068bbeb6a3c500b848f883a20bf225'/>
<id>8e24eea728068bbeb6a3c500b848f883a20bf225</id>
<content type='text'>
__FUNCTION__ is gcc-specific, use __func__

Signed-off-by: Harvey Harrison &lt;harvey.harrison@gmail.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
__FUNCTION__ is gcc-specific, use __func__

Signed-off-by: Harvey Harrison &lt;harvey.harrison@gmail.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
