<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/fs/nfs/inode.c, branch v3.10.60</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>NFS: Don't declare inode uptodate unless all attributes were checked</title>
<updated>2014-07-07T01:54:14+00:00</updated>
<author>
<name>Trond Myklebust</name>
<email>trond.myklebust@primarydata.com</email>
</author>
<published>2014-04-15T14:07:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=4b331d38a2add7b27ea44d26d9146ad1aabcbaab'/>
<id>4b331d38a2add7b27ea44d26d9146ad1aabcbaab</id>
<content type='text'>
commit 43b6535e717d2f656f71d9bd16022136b781c934 upstream.

Fix a bug, whereby nfs_update_inode() was declaring the inode to be
up to date despite not having checked all the attributes.
The bug occurs because the temporary variable in which we cache
the validity information is 'sanitised' before reapplying to
nfsi-&gt;cache_validity.

Reported-by: Kinglong Mee &lt;kinglongmee@gmail.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 43b6535e717d2f656f71d9bd16022136b781c934 upstream.

Fix a bug, whereby nfs_update_inode() was declaring the inode to be
up to date despite not having checked all the attributes.
The bug occurs because the temporary variable in which we cache
the validity information is 'sanitised' before reapplying to
nfsi-&gt;cache_validity.

Reported-by: Kinglong Mee &lt;kinglongmee@gmail.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>NFS: Add functionality to allow waiting on all outstanding reads to complete</title>
<updated>2013-04-09T02:12:33+00:00</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2013-04-09T01:38:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=577b42327d707fbe7166aad6902c2eeee6a65015'/>
<id>577b42327d707fbe7166aad6902c2eeee6a65015</id>
<content type='text'>
This will later allow NFS locking code to wait for readahead to complete
before releasing byte range locks.

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This will later allow NFS locking code to wait for readahead to complete
before releasing byte range locks.

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>NFS: __nfs_find_lock_context needs to check ctx-&gt;lock_context for a match too</title>
<updated>2013-03-25T16:04:10+00:00</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2013-03-15T22:11:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=8c86899f62738b8a22ca3a5f060e269b92e5545a'/>
<id>8c86899f62738b8a22ca3a5f060e269b92e5545a</id>
<content type='text'>
Currently, we're forcing an unnecessary duplication of the
initial nfs_lock_context in calls to nfs_get_lock_context, since
__nfs_find_lock_context ignores the ctx-&gt;lock_context.

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently, we're forcing an unnecessary duplication of the
initial nfs_lock_context in calls to nfs_get_lock_context, since
__nfs_find_lock_context ignores the ctx-&gt;lock_context.

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'nfs-for-3.9-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs</title>
<updated>2013-03-03T00:46:07+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2013-03-03T00:46:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=8d05b3771da8775799673212b57d62f57c70d68a'/>
<id>8d05b3771da8775799673212b57d62f57c70d68a</id>
<content type='text'>
Pull NFS client bugfixes from Trond Myklebust:
 "We've just concluded another Connectathon interoperability testing
  week, and so here are the fixes for the bugs that were discovered:

   - Don't allow NFS silly-renamed files to be deleted
   - Don't start the retransmission timer when out of socket space
   - Fix a couple of pnfs-related Oopses.
   - Fix one more NFSv4 state recovery deadlock
   - Don't loop forever when LAYOUTGET returns NFS4ERR_LAYOUTTRYLATER"

* tag 'nfs-for-3.9-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
  SUNRPC: One line comment fix
  NFSv4.1: LAYOUTGET EDELAY loops timeout to the MDS
  SUNRPC: add call to get configured timeout
  PNFS: set the default DS timeout to 60 seconds
  NFSv4: Fix another open/open_recovery deadlock
  nfs: don't allow nfs_find_actor to match inodes of the wrong type
  NFSv4.1: Hold reference to layout hdr in layoutget
  pnfs: fix resend_to_mds for directio
  SUNRPC: Don't start the retransmission timer when out of socket space
  NFS: Don't allow NFS silly-renamed files to be deleted, no signal
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull NFS client bugfixes from Trond Myklebust:
 "We've just concluded another Connectathon interoperability testing
  week, and so here are the fixes for the bugs that were discovered:

   - Don't allow NFS silly-renamed files to be deleted
   - Don't start the retransmission timer when out of socket space
   - Fix a couple of pnfs-related Oopses.
   - Fix one more NFSv4 state recovery deadlock
   - Don't loop forever when LAYOUTGET returns NFS4ERR_LAYOUTTRYLATER"

* tag 'nfs-for-3.9-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
  SUNRPC: One line comment fix
  NFSv4.1: LAYOUTGET EDELAY loops timeout to the MDS
  SUNRPC: add call to get configured timeout
  PNFS: set the default DS timeout to 60 seconds
  NFSv4: Fix another open/open_recovery deadlock
  nfs: don't allow nfs_find_actor to match inodes of the wrong type
  NFSv4.1: Hold reference to layout hdr in layoutget
  pnfs: fix resend_to_mds for directio
  SUNRPC: Don't start the retransmission timer when out of socket space
  NFS: Don't allow NFS silly-renamed files to be deleted, no signal
</pre>
</div>
</content>
</entry>
<entry>
<title>nfs: don't allow nfs_find_actor to match inodes of the wrong type</title>
<updated>2013-02-28T01:28:20+00:00</updated>
<author>
<name>Jeff Layton</name>
<email>jlayton@redhat.com</email>
</author>
<published>2013-02-28T01:10:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=f6488c9ba51d65410e2dbc4345413c0d9120971e'/>
<id>f6488c9ba51d65410e2dbc4345413c0d9120971e</id>
<content type='text'>
Benny Halevy reported the following oops when testing RHEL6:

&lt;7&gt;nfs_update_inode: inode 892950 mode changed, 0040755 to 0100644
&lt;1&gt;BUG: unable to handle kernel NULL pointer dereference at (null)
&lt;1&gt;IP: [&lt;ffffffffa02a52c5&gt;] nfs_closedir+0x15/0x30 [nfs]
&lt;4&gt;PGD 81448a067 PUD 831632067 PMD 0
&lt;4&gt;Oops: 0000 [#1] SMP
&lt;4&gt;last sysfs file: /sys/kernel/mm/redhat_transparent_hugepage/enabled
&lt;4&gt;CPU 6
&lt;4&gt;Modules linked in: fuse bonding 8021q garp ebtable_nat ebtables be2iscsi iscsi_boot_sysfs bnx2i cnic uio cxgb4i cxgb4 cxgb3i libcxgbi cxgb3 mdio ib_iser rdma_cm ib_cm iw_cm ib_sa ib_mad ib_core ib_addr iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi softdog bridge stp llc xt_physdev ipt_REJECT nf_conntrack_ipv4 nf_defrag_ipv4 xt_multiport iptable_filter ip_tables ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack ip6table_filter ip6_tables ipv6 dm_round_robin dm_multipath objlayoutdriver2(U) nfs(U) lockd fscache auth_rpcgss nfs_acl sunrpc vhost_net macvtap macvlan tun kvm_intel kvm be2net igb dca ptp pps_core microcode serio_raw sg iTCO_wdt iTCO_vendor_support i7core_edac edac_core shpchp ext4 mbcache jbd2 sd_mod crc_t10dif ahci dm_mirror dm_region_hash dm_log dm_mod [last unloaded: scsi_wait_scan]
&lt;4&gt;
&lt;4&gt;Pid: 6332, comm: dd Not tainted 2.6.32-358.el6.x86_64 #1 HP ProLiant DL170e G6  /ProLiant DL170e G6
&lt;4&gt;RIP: 0010:[&lt;ffffffffa02a52c5&gt;]  [&lt;ffffffffa02a52c5&gt;] nfs_closedir+0x15/0x30 [nfs]
&lt;4&gt;RSP: 0018:ffff88081458bb98  EFLAGS: 00010292
&lt;4&gt;RAX: ffffffffa02a52b0 RBX: 0000000000000000 RCX: 0000000000000003
&lt;4&gt;RDX: ffffffffa02e45a0 RSI: ffff88081440b300 RDI: ffff88082d5f5760
&lt;4&gt;RBP: ffff88081458bba8 R08: 0000000000000000 R09: 0000000000000000
&lt;4&gt;R10: 0000000000000772 R11: 0000000000400004 R12: 0000000040000008
&lt;4&gt;R13: ffff88082d5f5760 R14: ffff88082d6e8800 R15: ffff88082f12d780
&lt;4&gt;FS:  00007f728f37e700(0000) GS:ffff8800456c0000(0000) knlGS:0000000000000000
&lt;4&gt;CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
&lt;4&gt;CR2: 0000000000000000 CR3: 0000000831279000 CR4: 00000000000007e0
&lt;4&gt;DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
&lt;4&gt;DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
&lt;4&gt;Process dd (pid: 6332, threadinfo ffff88081458a000, task ffff88082fa0e040)
&lt;4&gt;Stack:
&lt;4&gt; 0000000040000008 ffff88081440b300 ffff88081458bbf8 ffffffff81182745
&lt;4&gt;&lt;d&gt; ffff88082d5f5760 ffff88082d6e8800 ffff88081458bbf8 ffffffffffffffea
&lt;4&gt;&lt;d&gt; ffff88082f12d780 ffff88082d6e8800 ffffffffa02a50a0 ffff88082d5f5760
&lt;4&gt;Call Trace:
&lt;4&gt; [&lt;ffffffff81182745&gt;] __fput+0xf5/0x210
&lt;4&gt; [&lt;ffffffffa02a50a0&gt;] ? do_open+0x0/0x20 [nfs]
&lt;4&gt; [&lt;ffffffff81182885&gt;] fput+0x25/0x30
&lt;4&gt; [&lt;ffffffff8117e23e&gt;] __dentry_open+0x27e/0x360
&lt;4&gt; [&lt;ffffffff811c397a&gt;] ? inotify_d_instantiate+0x2a/0x60
&lt;4&gt; [&lt;ffffffff8117e4b9&gt;] lookup_instantiate_filp+0x69/0x90
&lt;4&gt; [&lt;ffffffffa02a6679&gt;] nfs_intent_set_file+0x59/0x90 [nfs]
&lt;4&gt; [&lt;ffffffffa02a686b&gt;] nfs_atomic_lookup+0x1bb/0x310 [nfs]
&lt;4&gt; [&lt;ffffffff8118e0c2&gt;] __lookup_hash+0x102/0x160
&lt;4&gt; [&lt;ffffffff81225052&gt;] ? selinux_inode_permission+0x72/0xb0
&lt;4&gt; [&lt;ffffffff8118e76a&gt;] lookup_hash+0x3a/0x50
&lt;4&gt; [&lt;ffffffff81192a4b&gt;] do_filp_open+0x2eb/0xdd0
&lt;4&gt; [&lt;ffffffff8104757c&gt;] ? __do_page_fault+0x1ec/0x480
&lt;4&gt; [&lt;ffffffff8119f562&gt;] ? alloc_fd+0x92/0x160
&lt;4&gt; [&lt;ffffffff8117de79&gt;] do_sys_open+0x69/0x140
&lt;4&gt; [&lt;ffffffff811811f6&gt;] ? sys_lseek+0x66/0x80
&lt;4&gt; [&lt;ffffffff8117df90&gt;] sys_open+0x20/0x30
&lt;4&gt; [&lt;ffffffff8100b072&gt;] system_call_fastpath+0x16/0x1b
&lt;4&gt;Code: 65 48 8b 04 25 c8 cb 00 00 83 a8 44 e0 ff ff 01 5b 41 5c c9 c3 90 55 48 89 e5 53 48 83 ec 08 0f 1f 44 00 00 48 8b 9e a0 00 00 00 &lt;48&gt; 8b 3b e8 13 0c f7 ff 48 89 df e8 ab 3d ec e0 48 83 c4 08 31
&lt;1&gt;RIP  [&lt;ffffffffa02a52c5&gt;] nfs_closedir+0x15/0x30 [nfs]
&lt;4&gt; RSP &lt;ffff88081458bb98&gt;
&lt;4&gt;CR2: 0000000000000000

I think this is ultimately due to a bug on the server. The client had
previously found a directory dentry. It then later tried to do an atomic
open on a new (regular file) dentry. The attributes it got back had the
same filehandle as the previously found directory inode. It then tried
to put the filp because it failed the aops tests for O_DIRECT opens, and
oopsed here because the ctx was still NULL.

Obviously the root cause here is a server issue, but we can take steps
to mitigate this on the client. When nfs_fhget is called, we always know
what type of inode it is. In the event that there's a broken or
malicious server on the other end of the wire, the client can end up
crashing because the wrong ops are set on it.

Have nfs_find_actor check that the inode type is correct after checking
the fileid. The fileid check should rarely ever match, so it should only
rarely ever get to this check. In the case where we have a broken
server, we may see two different inodes with the same i_ino, but the
client should be able to cope with them without crashing.

This should fix the oops reported here:

    https://bugzilla.redhat.com/show_bug.cgi?id=913660

Reported-by: Benny Halevy &lt;bhalevy@tonian.com&gt;
Signed-off-by: Jeff Layton &lt;jlayton@redhat.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Benny Halevy reported the following oops when testing RHEL6:

&lt;7&gt;nfs_update_inode: inode 892950 mode changed, 0040755 to 0100644
&lt;1&gt;BUG: unable to handle kernel NULL pointer dereference at (null)
&lt;1&gt;IP: [&lt;ffffffffa02a52c5&gt;] nfs_closedir+0x15/0x30 [nfs]
&lt;4&gt;PGD 81448a067 PUD 831632067 PMD 0
&lt;4&gt;Oops: 0000 [#1] SMP
&lt;4&gt;last sysfs file: /sys/kernel/mm/redhat_transparent_hugepage/enabled
&lt;4&gt;CPU 6
&lt;4&gt;Modules linked in: fuse bonding 8021q garp ebtable_nat ebtables be2iscsi iscsi_boot_sysfs bnx2i cnic uio cxgb4i cxgb4 cxgb3i libcxgbi cxgb3 mdio ib_iser rdma_cm ib_cm iw_cm ib_sa ib_mad ib_core ib_addr iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi softdog bridge stp llc xt_physdev ipt_REJECT nf_conntrack_ipv4 nf_defrag_ipv4 xt_multiport iptable_filter ip_tables ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack ip6table_filter ip6_tables ipv6 dm_round_robin dm_multipath objlayoutdriver2(U) nfs(U) lockd fscache auth_rpcgss nfs_acl sunrpc vhost_net macvtap macvlan tun kvm_intel kvm be2net igb dca ptp pps_core microcode serio_raw sg iTCO_wdt iTCO_vendor_support i7core_edac edac_core shpchp ext4 mbcache jbd2 sd_mod crc_t10dif ahci dm_mirror dm_region_hash dm_log dm_mod [last unloaded: scsi_wait_scan]
&lt;4&gt;
&lt;4&gt;Pid: 6332, comm: dd Not tainted 2.6.32-358.el6.x86_64 #1 HP ProLiant DL170e G6  /ProLiant DL170e G6
&lt;4&gt;RIP: 0010:[&lt;ffffffffa02a52c5&gt;]  [&lt;ffffffffa02a52c5&gt;] nfs_closedir+0x15/0x30 [nfs]
&lt;4&gt;RSP: 0018:ffff88081458bb98  EFLAGS: 00010292
&lt;4&gt;RAX: ffffffffa02a52b0 RBX: 0000000000000000 RCX: 0000000000000003
&lt;4&gt;RDX: ffffffffa02e45a0 RSI: ffff88081440b300 RDI: ffff88082d5f5760
&lt;4&gt;RBP: ffff88081458bba8 R08: 0000000000000000 R09: 0000000000000000
&lt;4&gt;R10: 0000000000000772 R11: 0000000000400004 R12: 0000000040000008
&lt;4&gt;R13: ffff88082d5f5760 R14: ffff88082d6e8800 R15: ffff88082f12d780
&lt;4&gt;FS:  00007f728f37e700(0000) GS:ffff8800456c0000(0000) knlGS:0000000000000000
&lt;4&gt;CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
&lt;4&gt;CR2: 0000000000000000 CR3: 0000000831279000 CR4: 00000000000007e0
&lt;4&gt;DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
&lt;4&gt;DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
&lt;4&gt;Process dd (pid: 6332, threadinfo ffff88081458a000, task ffff88082fa0e040)
&lt;4&gt;Stack:
&lt;4&gt; 0000000040000008 ffff88081440b300 ffff88081458bbf8 ffffffff81182745
&lt;4&gt;&lt;d&gt; ffff88082d5f5760 ffff88082d6e8800 ffff88081458bbf8 ffffffffffffffea
&lt;4&gt;&lt;d&gt; ffff88082f12d780 ffff88082d6e8800 ffffffffa02a50a0 ffff88082d5f5760
&lt;4&gt;Call Trace:
&lt;4&gt; [&lt;ffffffff81182745&gt;] __fput+0xf5/0x210
&lt;4&gt; [&lt;ffffffffa02a50a0&gt;] ? do_open+0x0/0x20 [nfs]
&lt;4&gt; [&lt;ffffffff81182885&gt;] fput+0x25/0x30
&lt;4&gt; [&lt;ffffffff8117e23e&gt;] __dentry_open+0x27e/0x360
&lt;4&gt; [&lt;ffffffff811c397a&gt;] ? inotify_d_instantiate+0x2a/0x60
&lt;4&gt; [&lt;ffffffff8117e4b9&gt;] lookup_instantiate_filp+0x69/0x90
&lt;4&gt; [&lt;ffffffffa02a6679&gt;] nfs_intent_set_file+0x59/0x90 [nfs]
&lt;4&gt; [&lt;ffffffffa02a686b&gt;] nfs_atomic_lookup+0x1bb/0x310 [nfs]
&lt;4&gt; [&lt;ffffffff8118e0c2&gt;] __lookup_hash+0x102/0x160
&lt;4&gt; [&lt;ffffffff81225052&gt;] ? selinux_inode_permission+0x72/0xb0
&lt;4&gt; [&lt;ffffffff8118e76a&gt;] lookup_hash+0x3a/0x50
&lt;4&gt; [&lt;ffffffff81192a4b&gt;] do_filp_open+0x2eb/0xdd0
&lt;4&gt; [&lt;ffffffff8104757c&gt;] ? __do_page_fault+0x1ec/0x480
&lt;4&gt; [&lt;ffffffff8119f562&gt;] ? alloc_fd+0x92/0x160
&lt;4&gt; [&lt;ffffffff8117de79&gt;] do_sys_open+0x69/0x140
&lt;4&gt; [&lt;ffffffff811811f6&gt;] ? sys_lseek+0x66/0x80
&lt;4&gt; [&lt;ffffffff8117df90&gt;] sys_open+0x20/0x30
&lt;4&gt; [&lt;ffffffff8100b072&gt;] system_call_fastpath+0x16/0x1b
&lt;4&gt;Code: 65 48 8b 04 25 c8 cb 00 00 83 a8 44 e0 ff ff 01 5b 41 5c c9 c3 90 55 48 89 e5 53 48 83 ec 08 0f 1f 44 00 00 48 8b 9e a0 00 00 00 &lt;48&gt; 8b 3b e8 13 0c f7 ff 48 89 df e8 ab 3d ec e0 48 83 c4 08 31
&lt;1&gt;RIP  [&lt;ffffffffa02a52c5&gt;] nfs_closedir+0x15/0x30 [nfs]
&lt;4&gt; RSP &lt;ffff88081458bb98&gt;
&lt;4&gt;CR2: 0000000000000000

I think this is ultimately due to a bug on the server. The client had
previously found a directory dentry. It then later tried to do an atomic
open on a new (regular file) dentry. The attributes it got back had the
same filehandle as the previously found directory inode. It then tried
to put the filp because it failed the aops tests for O_DIRECT opens, and
oopsed here because the ctx was still NULL.

Obviously the root cause here is a server issue, but we can take steps
to mitigate this on the client. When nfs_fhget is called, we always know
what type of inode it is. In the event that there's a broken or
malicious server on the other end of the wire, the client can end up
crashing because the wrong ops are set on it.

Have nfs_find_actor check that the inode type is correct after checking
the fileid. The fileid check should rarely ever match, so it should only
rarely ever get to this check. In the case where we have a broken
server, we may see two different inodes with the same i_ino, but the
client should be able to cope with them without crashing.

This should fix the oops reported here:

    https://bugzilla.redhat.com/show_bug.cgi?id=913660

Reported-by: Benny Halevy &lt;bhalevy@tonian.com&gt;
Signed-off-by: Jeff Layton &lt;jlayton@redhat.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs</title>
<updated>2013-02-27T04:16:07+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2013-02-27T04:16:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=d895cb1af15c04c522a25c79cc429076987c089b'/>
<id>d895cb1af15c04c522a25c79cc429076987c089b</id>
<content type='text'>
Pull vfs pile (part one) from Al Viro:
 "Assorted stuff - cleaning namei.c up a bit, fixing -&gt;d_name/-&gt;d_parent
  locking violations, etc.

  The most visible changes here are death of FS_REVAL_DOT (replaced with
  "has -&gt;d_weak_revalidate()") and a new helper getting from struct file
  to inode.  Some bits of preparation to xattr method interface changes.

  Misc patches by various people sent this cycle *and* ocfs2 fixes from
  several cycles ago that should've been upstream right then.

  PS: the next vfs pile will be xattr stuff."

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (46 commits)
  saner proc_get_inode() calling conventions
  proc: avoid extra pde_put() in proc_fill_super()
  fs: change return values from -EACCES to -EPERM
  fs/exec.c: make bprm_mm_init() static
  ocfs2/dlm: use GFP_ATOMIC inside a spin_lock
  ocfs2: fix possible use-after-free with AIO
  ocfs2: Fix oops in ocfs2_fast_symlink_readpage() code path
  get_empty_filp()/alloc_file() leave both -&gt;f_pos and -&gt;f_version zero
  target: writev() on single-element vector is pointless
  export kernel_write(), convert open-coded instances
  fs: encode_fh: return FILEID_INVALID if invalid fid_type
  kill f_vfsmnt
  vfs: kill FS_REVAL_DOT by adding a d_weak_revalidate dentry op
  nfsd: handle vfs_getattr errors in acl protocol
  switch vfs_getattr() to struct path
  default SET_PERSONALITY() in linux/elf.h
  ceph: prepopulate inodes only when request is aborted
  d_hash_and_lookup(): export, switch open-coded instances
  9p: switch v9fs_set_create_acl() to inode+fid, do it before d_instantiate()
  9p: split dropping the acls from v9fs_set_create_acl()
  ...
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull vfs pile (part one) from Al Viro:
 "Assorted stuff - cleaning namei.c up a bit, fixing -&gt;d_name/-&gt;d_parent
  locking violations, etc.

  The most visible changes here are death of FS_REVAL_DOT (replaced with
  "has -&gt;d_weak_revalidate()") and a new helper getting from struct file
  to inode.  Some bits of preparation to xattr method interface changes.

  Misc patches by various people sent this cycle *and* ocfs2 fixes from
  several cycles ago that should've been upstream right then.

  PS: the next vfs pile will be xattr stuff."

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (46 commits)
  saner proc_get_inode() calling conventions
  proc: avoid extra pde_put() in proc_fill_super()
  fs: change return values from -EACCES to -EPERM
  fs/exec.c: make bprm_mm_init() static
  ocfs2/dlm: use GFP_ATOMIC inside a spin_lock
  ocfs2: fix possible use-after-free with AIO
  ocfs2: Fix oops in ocfs2_fast_symlink_readpage() code path
  get_empty_filp()/alloc_file() leave both -&gt;f_pos and -&gt;f_version zero
  target: writev() on single-element vector is pointless
  export kernel_write(), convert open-coded instances
  fs: encode_fh: return FILEID_INVALID if invalid fid_type
  kill f_vfsmnt
  vfs: kill FS_REVAL_DOT by adding a d_weak_revalidate dentry op
  nfsd: handle vfs_getattr errors in acl protocol
  switch vfs_getattr() to struct path
  default SET_PERSONALITY() in linux/elf.h
  ceph: prepopulate inodes only when request is aborted
  d_hash_and_lookup(): export, switch open-coded instances
  9p: switch v9fs_set_create_acl() to inode+fid, do it before d_instantiate()
  9p: split dropping the acls from v9fs_set_create_acl()
  ...
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace</title>
<updated>2013-02-26T00:00:49+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2013-02-26T00:00:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=94f2f14234178f118545a0be60a6371ddeb229b7'/>
<id>94f2f14234178f118545a0be60a6371ddeb229b7</id>
<content type='text'>
Pull user namespace and namespace infrastructure changes from Eric W Biederman:
 "This set of changes starts with a few small enhnacements to the user
  namespace.  reboot support, allowing more arbitrary mappings, and
  support for mounting devpts, ramfs, tmpfs, and mqueuefs as just the
  user namespace root.

  I do my best to document that if you care about limiting your
  unprivileged users that when you have the user namespace support
  enabled you will need to enable memory control groups.

  There is a minor bug fix to prevent overflowing the stack if someone
  creates way too many user namespaces.

  The bulk of the changes are a continuation of the kuid/kgid push down
  work through the filesystems.  These changes make using uids and gids
  typesafe which ensures that these filesystems are safe to use when
  multiple user namespaces are in use.  The filesystems converted for
  3.9 are ceph, 9p, afs, ocfs2, gfs2, ncpfs, nfs, nfsd, and cifs.  The
  changes for these filesystems were a little more involved so I split
  the changes into smaller hopefully obviously correct changes.

  XFS is the only filesystem that remains.  I was hoping I could get
  that in this release so that user namespace support would be enabled
  with an allyesconfig or an allmodconfig but it looks like the xfs
  changes need another couple of days before it they are ready."

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace: (93 commits)
  cifs: Enable building with user namespaces enabled.
  cifs: Convert struct cifs_ses to use a kuid_t and a kgid_t
  cifs: Convert struct cifs_sb_info to use kuids and kgids
  cifs: Modify struct smb_vol to use kuids and kgids
  cifs: Convert struct cifsFileInfo to use a kuid
  cifs: Convert struct cifs_fattr to use kuid and kgids
  cifs: Convert struct tcon_link to use a kuid.
  cifs: Modify struct cifs_unix_set_info_args to hold a kuid_t and a kgid_t
  cifs: Convert from a kuid before printing current_fsuid
  cifs: Use kuids and kgids SID to uid/gid mapping
  cifs: Pass GLOBAL_ROOT_UID and GLOBAL_ROOT_GID to keyring_alloc
  cifs: Use BUILD_BUG_ON to validate uids and gids are the same size
  cifs: Override unmappable incoming uids and gids
  nfsd: Enable building with user namespaces enabled.
  nfsd: Properly compare and initialize kuids and kgids
  nfsd: Store ex_anon_uid and ex_anon_gid as kuids and kgids
  nfsd: Modify nfsd4_cb_sec to use kuids and kgids
  nfsd: Handle kuids and kgids in the nfs4acl to posix_acl conversion
  nfsd: Convert nfsxdr to use kuids and kgids
  nfsd: Convert nfs3xdr to use kuids and kgids
  ...
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull user namespace and namespace infrastructure changes from Eric W Biederman:
 "This set of changes starts with a few small enhnacements to the user
  namespace.  reboot support, allowing more arbitrary mappings, and
  support for mounting devpts, ramfs, tmpfs, and mqueuefs as just the
  user namespace root.

  I do my best to document that if you care about limiting your
  unprivileged users that when you have the user namespace support
  enabled you will need to enable memory control groups.

  There is a minor bug fix to prevent overflowing the stack if someone
  creates way too many user namespaces.

  The bulk of the changes are a continuation of the kuid/kgid push down
  work through the filesystems.  These changes make using uids and gids
  typesafe which ensures that these filesystems are safe to use when
  multiple user namespaces are in use.  The filesystems converted for
  3.9 are ceph, 9p, afs, ocfs2, gfs2, ncpfs, nfs, nfsd, and cifs.  The
  changes for these filesystems were a little more involved so I split
  the changes into smaller hopefully obviously correct changes.

  XFS is the only filesystem that remains.  I was hoping I could get
  that in this release so that user namespace support would be enabled
  with an allyesconfig or an allmodconfig but it looks like the xfs
  changes need another couple of days before it they are ready."

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace: (93 commits)
  cifs: Enable building with user namespaces enabled.
  cifs: Convert struct cifs_ses to use a kuid_t and a kgid_t
  cifs: Convert struct cifs_sb_info to use kuids and kgids
  cifs: Modify struct smb_vol to use kuids and kgids
  cifs: Convert struct cifsFileInfo to use a kuid
  cifs: Convert struct cifs_fattr to use kuid and kgids
  cifs: Convert struct tcon_link to use a kuid.
  cifs: Modify struct cifs_unix_set_info_args to hold a kuid_t and a kgid_t
  cifs: Convert from a kuid before printing current_fsuid
  cifs: Use kuids and kgids SID to uid/gid mapping
  cifs: Pass GLOBAL_ROOT_UID and GLOBAL_ROOT_GID to keyring_alloc
  cifs: Use BUILD_BUG_ON to validate uids and gids are the same size
  cifs: Override unmappable incoming uids and gids
  nfsd: Enable building with user namespaces enabled.
  nfsd: Properly compare and initialize kuids and kgids
  nfsd: Store ex_anon_uid and ex_anon_gid as kuids and kgids
  nfsd: Modify nfsd4_cb_sec to use kuids and kgids
  nfsd: Handle kuids and kgids in the nfs4acl to posix_acl conversion
  nfsd: Convert nfsxdr to use kuids and kgids
  nfsd: Convert nfs3xdr to use kuids and kgids
  ...
</pre>
</div>
</content>
</entry>
<entry>
<title>new helper: file_inode(file)</title>
<updated>2013-02-23T04:31:31+00:00</updated>
<author>
<name>Al Viro</name>
<email>viro@zeniv.linux.org.uk</email>
</author>
<published>2013-01-23T22:07:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=496ad9aa8ef448058e36ca7a787c61f2e63f0f54'/>
<id>496ad9aa8ef448058e36ca7a787c61f2e63f0f54</id>
<content type='text'>
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>nfs: kuid and kgid conversions for nfs/inode.c</title>
<updated>2013-02-13T14:15:33+00:00</updated>
<author>
<name>Eric W. Biederman</name>
<email>ebiederm@xmission.com</email>
</author>
<published>2013-02-01T22:26:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=9ff593c4739c76c31ffdf7f2a1d67489ece728e6'/>
<id>9ff593c4739c76c31ffdf7f2a1d67489ece728e6</id>
<content type='text'>
- Use uid_eq and gid_eq when comparing kuids and kgids.
- Use make_kuid(&amp;init_user_ns, -2) and make_kgid(&amp;init_user_ns, -2) as
  the initial uid and gid on nfs inodes, instead of using the typeunsafe
  value of -2.

Cc: "J. Bruce Fields" &lt;bfields@fieldses.org&gt;
Cc: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
Signed-off-by: "Eric W. Biederman" &lt;ebiederm@xmission.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Use uid_eq and gid_eq when comparing kuids and kgids.
- Use make_kuid(&amp;init_user_ns, -2) and make_kgid(&amp;init_user_ns, -2) as
  the initial uid and gid on nfs inodes, instead of using the typeunsafe
  value of -2.

Cc: "J. Bruce Fields" &lt;bfields@fieldses.org&gt;
Cc: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
Signed-off-by: "Eric W. Biederman" &lt;ebiederm@xmission.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "NFS: add nfs_sb_deactive_async to avoid deadlock"</title>
<updated>2013-02-01T15:13:48+00:00</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2013-01-11T21:39:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=322b2b9032f4beba6f1c4158852a5a5b9ab841d7'/>
<id>322b2b9032f4beba6f1c4158852a5a5b9ab841d7</id>
<content type='text'>
This reverts commit 324d003b0cd82151adbaecefef57b73f7959a469.

The deadlock turned out to be caused by a workqueue limitation that has
now been worked around in the RPC code (see comment in rpc_free_task).

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 324d003b0cd82151adbaecefef57b73f7959a469.

The deadlock turned out to be caused by a workqueue limitation that has
now been worked around in the RPC code (see comment in rpc_free_task).

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
