<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/net/9p, branch v3.14</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>9p/trans_virtio.c: Fix broken zero-copy on vmalloc() buffers</title>
<updated>2014-02-11T01:48:54+00:00</updated>
<author>
<name>Richard Yao</name>
<email>ryao@gentoo.org</email>
</author>
<published>2014-02-09T00:32:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=b6f52ae2f0d32387bde2b89883e3b64d88b9bfe8'/>
<id>b6f52ae2f0d32387bde2b89883e3b64d88b9bfe8</id>
<content type='text'>
The 9p-virtio transport does zero copy on things larger than 1024 bytes
in size. It accomplishes this by returning the physical addresses of
pages to the virtio-pci device. At present, the translation is usually a
bit shift.

That approach produces an invalid page address when we read/write to
vmalloc buffers, such as those used for Linux kernel modules. Any
attempt to load a Linux kernel module from 9p-virtio produces the
following stack.

[&lt;ffffffff814878ce&gt;] p9_virtio_zc_request+0x45e/0x510
[&lt;ffffffff814814ed&gt;] p9_client_zc_rpc.constprop.16+0xfd/0x4f0
[&lt;ffffffff814839dd&gt;] p9_client_read+0x15d/0x240
[&lt;ffffffff811c8440&gt;] v9fs_fid_readn+0x50/0xa0
[&lt;ffffffff811c84a0&gt;] v9fs_file_readn+0x10/0x20
[&lt;ffffffff811c84e7&gt;] v9fs_file_read+0x37/0x70
[&lt;ffffffff8114e3fb&gt;] vfs_read+0x9b/0x160
[&lt;ffffffff81153571&gt;] kernel_read+0x41/0x60
[&lt;ffffffff810c83ab&gt;] copy_module_from_fd.isra.34+0xfb/0x180

Subsequently, QEMU will die printing:

qemu-system-x86_64: virtio: trying to map MMIO memory

This patch enables 9p-virtio to correctly handle this case. This not
only enables us to load Linux kernel modules off virtfs, but also
enables ZFS file-based vdevs on virtfs to be used without killing QEMU.

Special thanks to both Avi Kivity and Alexander Graf for their
interpretation of QEMU backtraces. Without their guidence, tracking down
this bug would have taken much longer. Also, special thanks to Linus
Torvalds for his insightful explanation of why this should use
is_vmalloc_addr() instead of is_vmalloc_or_module_addr():

https://lkml.org/lkml/2014/2/8/272

Signed-off-by: Richard Yao &lt;ryao@gentoo.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The 9p-virtio transport does zero copy on things larger than 1024 bytes
in size. It accomplishes this by returning the physical addresses of
pages to the virtio-pci device. At present, the translation is usually a
bit shift.

That approach produces an invalid page address when we read/write to
vmalloc buffers, such as those used for Linux kernel modules. Any
attempt to load a Linux kernel module from 9p-virtio produces the
following stack.

[&lt;ffffffff814878ce&gt;] p9_virtio_zc_request+0x45e/0x510
[&lt;ffffffff814814ed&gt;] p9_client_zc_rpc.constprop.16+0xfd/0x4f0
[&lt;ffffffff814839dd&gt;] p9_client_read+0x15d/0x240
[&lt;ffffffff811c8440&gt;] v9fs_fid_readn+0x50/0xa0
[&lt;ffffffff811c84a0&gt;] v9fs_file_readn+0x10/0x20
[&lt;ffffffff811c84e7&gt;] v9fs_file_read+0x37/0x70
[&lt;ffffffff8114e3fb&gt;] vfs_read+0x9b/0x160
[&lt;ffffffff81153571&gt;] kernel_read+0x41/0x60
[&lt;ffffffff810c83ab&gt;] copy_module_from_fd.isra.34+0xfb/0x180

Subsequently, QEMU will die printing:

qemu-system-x86_64: virtio: trying to map MMIO memory

This patch enables 9p-virtio to correctly handle this case. This not
only enables us to load Linux kernel modules off virtfs, but also
enables ZFS file-based vdevs on virtfs to be used without killing QEMU.

Special thanks to both Avi Kivity and Alexander Graf for their
interpretation of QEMU backtraces. Without their guidence, tracking down
this bug would have taken much longer. Also, special thanks to Linus
Torvalds for his insightful explanation of why this should use
is_vmalloc_addr() instead of is_vmalloc_or_module_addr():

https://lkml.org/lkml/2014/2/8/272

Signed-off-by: Richard Yao &lt;ryao@gentoo.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: Mark function as static in 9p/client.c</title>
<updated>2014-02-10T01:32:49+00:00</updated>
<author>
<name>Rashika Kheria</name>
<email>rashika.kheria@gmail.com</email>
</author>
<published>2014-02-09T14:27:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=fd944bded5ce32247941ce54eb8f65646549886b'/>
<id>fd944bded5ce32247941ce54eb8f65646549886b</id>
<content type='text'>
Mark function as static in net/9p/client.c because it is not used
outside this file.

This eliminates the following warning in net/9p/client.c:
net/9p/client.c:207:18: warning: no previous prototype for ‘p9_fcall_alloc’ [-Wmissing-prototypes]

Signed-off-by: Rashika Kheria &lt;rashika.kheria@gmail.com&gt;
Reviewed-by: Josh Triplett &lt;josh@joshtriplett.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Mark function as static in net/9p/client.c because it is not used
outside this file.

This eliminates the following warning in net/9p/client.c:
net/9p/client.c:207:18: warning: no previous prototype for ‘p9_fcall_alloc’ [-Wmissing-prototypes]

Signed-off-by: Rashika Kheria &lt;rashika.kheria@gmail.com&gt;
Reviewed-by: Josh Triplett &lt;josh@joshtriplett.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net/9p: remove virtio default hack and set appropriate bits instead</title>
<updated>2013-11-23T22:13:36+00:00</updated>
<author>
<name>Eric Van Hensbergen</name>
<email>ericvh@gmail.com</email>
</author>
<published>2013-11-12T16:20:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=f94741fd2832e7abc30fbf6dc13ed627c1fcc01a'/>
<id>f94741fd2832e7abc30fbf6dc13ed627c1fcc01a</id>
<content type='text'>
A few releases back a patch made virtio the default transport, however
it was done in a way which side-stepped the mechanism put in place to
allow for this selection.  This patch cleans that up while maintaining
virtio as the default transport.

Signed-off-by: Eric Van Hensbergen &lt;ericvh@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A few releases back a patch made virtio the default transport, however
it was done in a way which side-stepped the mechanism put in place to
allow for this selection.  This patch cleans that up while maintaining
virtio as the default transport.

Signed-off-by: Eric Van Hensbergen &lt;ericvh@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'virtio-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux</title>
<updated>2013-11-15T04:28:47+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2013-11-15T04:28:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=b746f9c7941f227ad582b4f0bc981f3adcbc46b2'/>
<id>b746f9c7941f227ad582b4f0bc981f3adcbc46b2</id>
<content type='text'>
Pull virtio updates from Rusty Russell:
 "Nothing really exciting: some groundwork for changing virtio endian,
  and some robustness fixes for broken virtio devices, plus minor
  tweaks"

* tag 'virtio-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:
  virtio_scsi: verify if queue is broken after virtqueue_get_buf()
  x86, asmlinkage, lguest: Pass in globals into assembler statement
  virtio: mmio: fix signature checking for BE guests
  virtio_ring: adapt to notify() returning bool
  virtio_net: verify if queue is broken after virtqueue_get_buf()
  virtio_console: verify if queue is broken after virtqueue_get_buf()
  virtio_blk: verify if queue is broken after virtqueue_get_buf()
  virtio_ring: add new function virtqueue_is_broken()
  virtio_test: verify if virtqueue_kick() succeeded
  virtio_net: verify if virtqueue_kick() succeeded
  virtio_ring: let virtqueue_{kick()/notify()} return a bool
  virtio_ring: change host notification API
  virtio_config: remove virtio_config_val
  virtio: use size-based config accessors.
  virtio_config: introduce size-based accessors.
  virtio_ring: plug kmemleak false positive.
  virtio: pm: use CONFIG_PM_SLEEP instead of CONFIG_PM
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull virtio updates from Rusty Russell:
 "Nothing really exciting: some groundwork for changing virtio endian,
  and some robustness fixes for broken virtio devices, plus minor
  tweaks"

* tag 'virtio-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:
  virtio_scsi: verify if queue is broken after virtqueue_get_buf()
  x86, asmlinkage, lguest: Pass in globals into assembler statement
  virtio: mmio: fix signature checking for BE guests
  virtio_ring: adapt to notify() returning bool
  virtio_net: verify if queue is broken after virtqueue_get_buf()
  virtio_console: verify if queue is broken after virtqueue_get_buf()
  virtio_blk: verify if queue is broken after virtqueue_get_buf()
  virtio_ring: add new function virtqueue_is_broken()
  virtio_test: verify if virtqueue_kick() succeeded
  virtio_net: verify if virtqueue_kick() succeeded
  virtio_ring: let virtqueue_{kick()/notify()} return a bool
  virtio_ring: change host notification API
  virtio_config: remove virtio_config_val
  virtio: use size-based config accessors.
  virtio_config: introduce size-based accessors.
  virtio_ring: plug kmemleak false positive.
  virtio: pm: use CONFIG_PM_SLEEP instead of CONFIG_PM
</pre>
</div>
</content>
</entry>
<entry>
<title>file-&gt;f_op is never NULL...</title>
<updated>2013-10-25T03:34:54+00:00</updated>
<author>
<name>Al Viro</name>
<email>viro@zeniv.linux.org.uk</email>
</author>
<published>2013-09-22T20:27:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=72c2d53192004845cbc19cd8a30b3212a9288140'/>
<id>72c2d53192004845cbc19cd8a30b3212a9288140</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>virtio: use size-based config accessors.</title>
<updated>2013-10-17T00:25:37+00:00</updated>
<author>
<name>Rusty Russell</name>
<email>rusty@rustcorp.com.au</email>
</author>
<published>2013-10-14T07:41:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=855e0c5288177bcb193f6f6316952d2490478e1c'/>
<id>855e0c5288177bcb193f6f6316952d2490478e1c</id>
<content type='text'>
This lets the transport do endian conversion if necessary, and insulates
the drivers from the difference.

Most drivers can use the simple helpers virtio_cread() and virtio_cwrite().

Signed-off-by: Rusty Russell &lt;rusty@rustcorp.com.au&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This lets the transport do endian conversion if necessary, and insulates
the drivers from the difference.

Most drivers can use the simple helpers virtio_cread() and virtio_cwrite().

Signed-off-by: Rusty Russell &lt;rusty@rustcorp.com.au&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'for-linus-3.12-merge' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs</title>
<updated>2013-09-11T19:34:13+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2013-09-11T19:34:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=2b76db6a0f649f5a54805807d36d51b6e9e49089'/>
<id>2b76db6a0f649f5a54805807d36d51b6e9e49089</id>
<content type='text'>
Pull 9p updates from Eric Van Hensbergen:
 "Minor 9p fixes and tweaks for 3.12 merge window

  The first fixes namespace issues which causes a kernel NULL pointer
  dereference, the second fixes uevent handling to work better with
  udev, and the third switches some code to use srlcpy instead of
  strncpy in order to be safer.

  All changes have been baking in for-next for at least 2 weeks"

* tag 'for-linus-3.12-merge' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs:
  fs/9p: avoid accessing utsname after namespace has been torn down
  9p: send uevent after adding/removing mount_tag attribute
  fs: 9p: use strlcpy instead of strncpy
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull 9p updates from Eric Van Hensbergen:
 "Minor 9p fixes and tweaks for 3.12 merge window

  The first fixes namespace issues which causes a kernel NULL pointer
  dereference, the second fixes uevent handling to work better with
  udev, and the third switches some code to use srlcpy instead of
  strncpy in order to be safer.

  All changes have been baking in for-next for at least 2 weeks"

* tag 'for-linus-3.12-merge' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs:
  fs/9p: avoid accessing utsname after namespace has been torn down
  9p: send uevent after adding/removing mount_tag attribute
  fs: 9p: use strlcpy instead of strncpy
</pre>
</div>
</content>
</entry>
<entry>
<title>fs/9p: avoid accessing utsname after namespace has been torn down</title>
<updated>2013-08-26T15:28:46+00:00</updated>
<author>
<name>Will Deacon</name>
<email>will.deacon@arm.com</email>
</author>
<published>2013-08-21T17:24:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=50192abe02929586111fb33f216060a9341875f1'/>
<id>50192abe02929586111fb33f216060a9341875f1</id>
<content type='text'>
During trinity fuzzing in a kvmtool guest, I stumbled across the
following:

Unable to handle kernel NULL pointer dereference at virtual address 00000004
PC is at v9fs_file_do_lock+0xc8/0x1a0
LR is at v9fs_file_do_lock+0x48/0x1a0
[&lt;c01e2ed0&gt;] (v9fs_file_do_lock+0xc8/0x1a0) from [&lt;c0119154&gt;] (locks_remove_flock+0x8c/0x124)
[&lt;c0119154&gt;] (locks_remove_flock+0x8c/0x124) from [&lt;c00d9bf0&gt;] (__fput+0x58/0x1e4)
[&lt;c00d9bf0&gt;] (__fput+0x58/0x1e4) from [&lt;c0044340&gt;] (task_work_run+0xac/0xe8)
[&lt;c0044340&gt;] (task_work_run+0xac/0xe8) from [&lt;c002e36c&gt;] (do_exit+0x6bc/0x8d8)
[&lt;c002e36c&gt;] (do_exit+0x6bc/0x8d8) from [&lt;c002e674&gt;] (do_group_exit+0x3c/0xb0)
[&lt;c002e674&gt;] (do_group_exit+0x3c/0xb0) from [&lt;c002e6f8&gt;] (__wake_up_parent+0x0/0x18)

I believe this is due to an attempt to access utsname()-&gt;nodename, after
exit_task_namespaces() has been called, leaving current-&gt;nsproxy-&gt;uts_ns
as NULL and causing the above dereference.

A similar issue was fixed for lockd in 9a1b6bf818e7 ("LOCKD: Don't call
utsname()-&gt;nodename from nlmclnt_setlockargs"), so this patch attempts
something similar for 9pfs.

Cc: Eric Van Hensbergen &lt;ericvh@gmail.com&gt;
Cc: Ron Minnich &lt;rminnich@sandia.gov&gt;
Cc: Latchesar Ionkov &lt;lucho@ionkov.net&gt;
Cc: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
Signed-off-by: Will Deacon &lt;will.deacon@arm.com&gt;
Signed-off-by: Eric Van Hensbergen &lt;ericvh@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
During trinity fuzzing in a kvmtool guest, I stumbled across the
following:

Unable to handle kernel NULL pointer dereference at virtual address 00000004
PC is at v9fs_file_do_lock+0xc8/0x1a0
LR is at v9fs_file_do_lock+0x48/0x1a0
[&lt;c01e2ed0&gt;] (v9fs_file_do_lock+0xc8/0x1a0) from [&lt;c0119154&gt;] (locks_remove_flock+0x8c/0x124)
[&lt;c0119154&gt;] (locks_remove_flock+0x8c/0x124) from [&lt;c00d9bf0&gt;] (__fput+0x58/0x1e4)
[&lt;c00d9bf0&gt;] (__fput+0x58/0x1e4) from [&lt;c0044340&gt;] (task_work_run+0xac/0xe8)
[&lt;c0044340&gt;] (task_work_run+0xac/0xe8) from [&lt;c002e36c&gt;] (do_exit+0x6bc/0x8d8)
[&lt;c002e36c&gt;] (do_exit+0x6bc/0x8d8) from [&lt;c002e674&gt;] (do_group_exit+0x3c/0xb0)
[&lt;c002e674&gt;] (do_group_exit+0x3c/0xb0) from [&lt;c002e6f8&gt;] (__wake_up_parent+0x0/0x18)

I believe this is due to an attempt to access utsname()-&gt;nodename, after
exit_task_namespaces() has been called, leaving current-&gt;nsproxy-&gt;uts_ns
as NULL and causing the above dereference.

A similar issue was fixed for lockd in 9a1b6bf818e7 ("LOCKD: Don't call
utsname()-&gt;nodename from nlmclnt_setlockargs"), so this patch attempts
something similar for 9pfs.

Cc: Eric Van Hensbergen &lt;ericvh@gmail.com&gt;
Cc: Ron Minnich &lt;rminnich@sandia.gov&gt;
Cc: Latchesar Ionkov &lt;lucho@ionkov.net&gt;
Cc: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
Signed-off-by: Will Deacon &lt;will.deacon@arm.com&gt;
Signed-off-by: Eric Van Hensbergen &lt;ericvh@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>9p: send uevent after adding/removing mount_tag attribute</title>
<updated>2013-08-26T15:28:22+00:00</updated>
<author>
<name>Michael Marineau</name>
<email>michael.marineau@coreos.com</email>
</author>
<published>2013-08-11T04:53:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=e0d6cb9cd3a3ac8a3b8e5b22b83c4f8619786f22'/>
<id>e0d6cb9cd3a3ac8a3b8e5b22b83c4f8619786f22</id>
<content type='text'>
This driver adds an attribute to the existing virtio device so a CHANGE
event is required in order udev rules to make use of it. The ADD event
happens before this driver is probed and unlike a more typical driver
like a block device there isn't a higher level device to watch for.

Signed-off-by: Michael Marineau &lt;michael.marineau@coreos.com&gt;
Signed-off-by: Eric Van Hensbergen &lt;ericvh@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This driver adds an attribute to the existing virtio device so a CHANGE
event is required in order udev rules to make use of it. The ADD event
happens before this driver is probed and unlike a more typical driver
like a block device there isn't a higher level device to watch for.

Signed-off-by: Michael Marineau &lt;michael.marineau@coreos.com&gt;
Signed-off-by: Eric Van Hensbergen &lt;ericvh@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>9p: client: remove unused code and any reference to "cancelled" function</title>
<updated>2013-07-30T22:54:28+00:00</updated>
<author>
<name>Andi Shyti</name>
<email>andi@etezian.org</email>
</author>
<published>2013-07-25T08:54:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=60ff779c4abba37a31bd8624ef45026f7fb1b70c'/>
<id>60ff779c4abba37a31bd8624ef45026f7fb1b70c</id>
<content type='text'>
This patch reverts commit

80b45261a0b263536b043c5ccfc4ba4fc27c2acc

which was implementing a 'cancelled' functionality to notify that
a cancelled request will not be replied.

This implementation was not used anywhere and therefore removed.

Signed-off-by: Andi Shyti &lt;andi@etezian.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch reverts commit

80b45261a0b263536b043c5ccfc4ba4fc27c2acc

which was implementing a 'cancelled' functionality to notify that
a cancelled request will not be replied.

This implementation was not used anywhere and therefore removed.

Signed-off-by: Andi Shyti &lt;andi@etezian.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
</feed>
