<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/fs, branch v2.6.16.43</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/fs?h=v2.6.16.43</id>
<link rel='self' href='https://git.amat.us/linux/atom/fs?h=v2.6.16.43'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2007-03-02T18:34:09Z</updated>
<entry>
<title>fs/bad_inode.c 64bit fix</title>
<updated>2007-03-02T18:34:09Z</updated>
<author>
<name>Adrian Bunk</name>
<email>bunk@stusta.de</email>
</author>
<published>2007-03-02T18:34:09Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f0a54518730393941e2c4ae9634ada77f9a610c6'/>
<id>urn:sha1:f0a54518730393941e2c4ae9634ada77f9a610c6</id>
<content type='text'>
Signed-off-by: Adrian Bunk &lt;bunk@stusta.de&gt;
</content>
</entry>
<entry>
<title>fix ext3 block bitmap leakage</title>
<updated>2007-02-26T00:48:36Z</updated>
<author>
<name>Kirill Korotaev</name>
<email>dev@openvz.org</email>
</author>
<published>2007-02-26T00:48:36Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=4c8a6fed53c2c10604a7c762d1bd31388709c4ac'/>
<id>urn:sha1:4c8a6fed53c2c10604a7c762d1bd31388709c4ac</id>
<content type='text'>
This patch fixes ext3 block bitmap leakage,
which leads to the following fsck messages on
_healthy_ filesystem:
Block bitmap differences:  -64159 -73707

All kernels up to 2.6.17 have this bug.

Found by
   Vasily Averin &lt;vvs@sw.ru&gt; and Andrey Savochkin &lt;saw@sawoct.com&gt;
Test case triggered the issue was created by
   Dmitry Monakhov &lt;dmonakhov@sw.ru&gt;

Signed-Off-By: Kirill Korotaev &lt;dev@openvz.org&gt;
Signed-off-by: Adrian Bunk &lt;bunk@stusta.de&gt;
</content>
</entry>
<entry>
<title>fix bad_inode_ops memory corruption (CVE-2006-5753)</title>
<updated>2007-02-20T23:57:05Z</updated>
<author>
<name>Eric Sandeen</name>
<email>sandeen@redhat.com</email>
</author>
<published>2007-02-20T23:57:05Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=e48d2dd437e8f5c1fd4ae7ef8c77142e58491151'/>
<id>urn:sha1:e48d2dd437e8f5c1fd4ae7ef8c77142e58491151</id>
<content type='text'>
CVE-2006-5753 is for a case where an inode can be marked bad, switching
the ops to bad_inode_ops, which are all connected as:

static int return_EIO(void)
{
        return -EIO;
}

#define EIO_ERROR ((void *) (return_EIO))

static struct inode_operations bad_inode_ops =
{
        .create         = bad_inode_create
...etc...

The problem here is that the void cast causes return types to not be
promoted, and for ops such as listxattr which expect more than 32 bits of
return value, the 32-bit -EIO is interpreted as a large positive 64-bit
number, i.e. 0x00000000fffffffa instead of 0xfffffffa.

This goes particularly badly when the return value is taken as a number of
bytes to copy into, say, a user's buffer for example...

I originally had coded up the fix by creating a return_EIO_&lt;TYPE&gt; macro
for each return type, like this:

static int return_EIO_int(void)
{
    return -EIO;
}
#define EIO_ERROR_INT ((void *) (return_EIO_int))

static struct inode_operations bad_inode_ops =
{
    .create         = EIO_ERROR_INT,
...etc...

but Al felt that it was probably better to create an EIO-returner for each
actual op signature.  Since so few ops share a signature, I just went ahead
&amp; created an EIO function for each individual file &amp; inode op that returns
a value.

Adrian Bunk:
backported to 2.6.16

Signed-off-by: Eric Sandeen &lt;sandeen@redhat.com&gt;
Signed-off-by: Adrian Bunk &lt;bunk@stusta.de&gt;
</content>
</entry>
<entry>
<title>Fix a free-wrong-pointer bug in nfs/acl server (CVE-2007-0772)</title>
<updated>2007-02-20T23:14:36Z</updated>
<author>
<name>Greg Banks</name>
<email>gnb@sgi.com</email>
</author>
<published>2007-02-20T23:14:36Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=0d1335f51d535fa036c5cddccd1779cab5f2f143'/>
<id>urn:sha1:0d1335f51d535fa036c5cddccd1779cab5f2f143</id>
<content type='text'>
Due to type confusion, when an nfsacl verison 2 'ACCESS' request
finishes and tries to clean up, it calls fh_put on entiredly the
wrong thing and this can cause an oops.

Signed-off-by: Adrian Bunk &lt;bunk@stusta.de&gt;
</content>
</entry>
<entry>
<title>Fix up CIFS for "test_clear_page_dirty()" removal</title>
<updated>2007-02-13T12:14:45Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@osdl.org</email>
</author>
<published>2007-02-13T12:14:45Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=b3d6856755b3d0380da5dda54ee273f20ee4a539'/>
<id>urn:sha1:b3d6856755b3d0380da5dda54ee273f20ee4a539</id>
<content type='text'>
This also adds he required page "writeback" flag handling, that cifs
hasn't been doing and that the page dirty flag changes made obvious.

Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
Acked-by: Steve French &lt;smfltc@us.ibm.com&gt;
</content>
</entry>
<entry>
<title>fix umask when noACL kernel meets extN tuned for ACLs</title>
<updated>2007-02-13T12:10:20Z</updated>
<author>
<name>Hugh Dickins</name>
<email>hugh@veritas.com</email>
</author>
<published>2007-02-13T12:10:20Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=0e894923475e1f59dc7b58851e90c4114acf2e2f'/>
<id>urn:sha1:0e894923475e1f59dc7b58851e90c4114acf2e2f</id>
<content type='text'>
Fix insecure default behaviour reported by Tigran Aivazian: if an
ext2 or ext3 filesystem is tuned to mount with "acl", but mounted by
a kernel built without ACL support, then umask was ignored when creating
inodes - though root or user has umask 022, touch creates files as 0666,
and mkdir creates directories as 0777.

This appears to have worked right until 2.6.11, when a fix to the default
mode on symlinks (always 0777) assumed VFS applies umask: which it does,
unless the mount is marked for ACLs; but ext[23] set MS_POSIXACL in
s_flags according to s_mount_opt set according to def_mount_opts.

We could revert to the 2.6.10 ext[23]_init_acl (adding an S_ISLNK test);
but other filesystems only set MS_POSIXACL when ACLs are configured.  We
could fix this at another level; but it seems most robust to avoid setting
the s_mount_opt flag in the first place (at the expense of more ifdefs).

Likewise don't set the XATTR_USER flag when built without XATTR support.

Signed-off-by: Hugh Dickins &lt;hugh@veritas.com&gt;
Signed-off-by: Adrian Bunk &lt;bunk@stusta.de&gt;
</content>
</entry>
<entry>
<title>reiserfs: avoid tail packing if an inode was ever mmapped</title>
<updated>2007-02-03T01:38:47Z</updated>
<author>
<name>Vladimir Saveliev</name>
<email>vs@namesys.com</email>
</author>
<published>2007-02-03T01:38:47Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=4f3f184b37afd4683a828217234efb0a296eff88'/>
<id>urn:sha1:4f3f184b37afd4683a828217234efb0a296eff88</id>
<content type='text'>
This patch fixes a confusion reiserfs has for a long time.

On release file operation reiserfs used to try to pack file data stored in
last incomplete page of some files into metadata blocks.  After packing the
page got cleared with clear_page_dirty.  It did not take into account that
the page may be mmaped into other process's address space.  Recent
replacement for clear_page_dirty cancel_dirty_page found the confusion with
sanity check that page has to be not mapped.

The patch fixes the confusion by making reiserfs avoid tail packing if an
inode was ever mmapped.  reiserfs_mmap and reiserfs_file_release are
serialized with mutex in reiserfs specific inode.  reiserfs_mmap locks the
mutex and sets a bit in reiserfs specific inode flags.
reiserfs_file_release checks the bit having the mutex locked.  If bit is
set - tail packing is avoided.  This eliminates a possibility that mmapped
page gets cancel_page_dirty-ed.

Signed-off-by: Vladimir Saveliev &lt;vs@namesys.com&gt;
Signed-off-by: Adrian Bunk &lt;bunk@stusta.de&gt;
</content>
</entry>
<entry>
<title>adfs: fix filename handling</title>
<updated>2007-01-22T20:41:21Z</updated>
<author>
<name>James Bursa</name>
<email>james@zamez.org</email>
</author>
<published>2007-01-20T21:58:51Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c57c54983f560848ab6018a962762676fc9c7e6c'/>
<id>urn:sha1:c57c54983f560848ab6018a962762676fc9c7e6c</id>
<content type='text'>
Fix filenames on adfs discs being terminated at the first character greater
than 128 (adfs filenames are Latin 1).  I saw this problem when using a
loopback adfs image on a 2.6.17-rc5 x86_64 machine, and the patch fixed it
there.

Signed-off-by: Adrian Bunk &lt;bunk@stusta.de&gt;
</content>
</entry>
<entry>
<title>mm: fix bug in set_page_dirty_buffers</title>
<updated>2007-01-20T21:16:03Z</updated>
<author>
<name>Nick Piggin</name>
<email>npiggin@suse.de</email>
</author>
<published>2007-01-20T21:16:03Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=01f02a48774e7ec4fedd6efeed0f15cb6f04b78a'/>
<id>urn:sha1:01f02a48774e7ec4fedd6efeed0f15cb6f04b78a</id>
<content type='text'>
This was triggered, but not the fault of, the dirty page accounting
patches. Suitable for -stable as well, after it goes upstream.

Unable to handle kernel NULL pointer dereference at virtual address 0000004c
EIP is at _spin_lock+0x12/0x66
Call Trace:
 [&lt;401766e7&gt;] __set_page_dirty_buffers+0x15/0xc0
 [&lt;401401e7&gt;] set_page_dirty+0x2c/0x51
 [&lt;40140db2&gt;] set_page_dirty_balance+0xb/0x3b
 [&lt;40145d29&gt;] __do_fault+0x1d8/0x279
 [&lt;40147059&gt;] __handle_mm_fault+0x125/0x951
 [&lt;401133f1&gt;] do_page_fault+0x440/0x59f
 [&lt;4034d0c1&gt;] error_code+0x39/0x40
 [&lt;08048a33&gt;] 0x8048a33
 =======================

Signed-off-by: Nick Piggin &lt;npiggin@suse.de&gt;
Signed-off-by: Adrian Bunk &lt;bunk@stusta.de&gt;
</content>
</entry>
<entry>
<title>skip data conversion in compat_sys_mount when data_page is NULL</title>
<updated>2007-01-09T02:23:35Z</updated>
<author>
<name>Andrey Mirkin</name>
<email>amirkin@openvz.org</email>
</author>
<published>2007-01-08T22:07:27Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f701db35660a6017bef6d6e911d095bcf8b74010'/>
<id>urn:sha1:f701db35660a6017bef6d6e911d095bcf8b74010</id>
<content type='text'>
OpenVZ Linux kernel team has found a problem with mounting in compat mode.

Simple command "mount -t smbfs ..." on Fedora Core 5 distro in 32-bit mode
leads to oops:

Unable to handle kernel NULL pointer dereference at 0000000000000000 RIP:
[&lt;ffffffff802bc7c6&gt;] compat_sys_mount+0xd6/0x290
PGD 34d48067 PUD 34d03067 PMD 0
Oops: 0000 [1] SMP
CPU: 0
Modules linked in: iptable_nat simfs smbfs ip_nat ip_conntrack vzdquota
parport_pc lp parport 8021q bridge llc vznetdev vzmon nfs lockd sunrpc vzdev
iptable_filter af_packet xt_length ipt_ttl xt_tcpmss ipt_TCPMSS
iptable_mangle xt_limit ipt_tos ipt_REJECT ip_tables x_tables thermal
processor fan button battery asus_acpi ac uhci_hcd ehci_hcd usbcore i2c_i801
i2c_core e100 mii floppy ide_cd cdrom
Pid: 14656, comm: mount
RIP: 0060:[&lt;ffffffff802bc7c6&gt;]  [&lt;ffffffff802bc7c6&gt;]
compat_sys_mount+0xd6/0x290
RSP: 0000:ffff810034d31f38  EFLAGS: 00010292
RAX: 000000000000002c RBX: 0000000000000000 RCX: 0000000000000000
RDX: ffff810034c86bc0 RSI: 0000000000000096 RDI: ffffffff8061fc90
RBP: ffff810034d31f78 R08: 0000000000000000 R09: 000000000000000d
R10: ffff810034d31e58 R11: 0000000000000001 R12: ffff810039dc3000
R13: 000000000805ea48 R14: 0000000000000000 R15: 00000000c0ed0000
FS:  0000000000000000(0000) GS:ffffffff80749000(0033) knlGS:00000000b7d556b0
CS:  0060 DS: 007b ES: 007b CR0: 000000008005003b
CR2: 0000000000000000 CR3: 0000000034d43000 CR4: 00000000000006e0
Process mount (pid: 14656, veid=300, threadinfo ffff810034d30000, task
ffff810034c86bc0)
Stack:  0000000000000000 ffff810034dd0000 ffff810034e4a000 000000000805ea48
 0000000000000000 0000000000000000 0000000000000000 0000000000000000
 000000000805ea48 ffffffff8021e64e 0000000000000000 0000000000000000
Call Trace:
 [&lt;ffffffff8021e64e&gt;] ia32_sysret+0x0/0xa

Code: 83 3b 06 0f 85 41 01 00 00 0f b7 43 0c 89 43 14 0f b7 43 0a
RIP  [&lt;ffffffff802bc7c6&gt;] compat_sys_mount+0xd6/0x290
 RSP &lt;ffff810034d31f38&gt;
CR2: 0000000000000000

The problem is that data_page pointer can be NULL, so we should skip data
conversion in this case.

Signed-off-by: Andrey Mirkin &lt;amirkin@openvz.org&gt;
Signed-off-by: Adrian Bunk &lt;bunk@stusta.de&gt;
</content>
</entry>
</feed>
