<feed xmlns='http://www.w3.org/2005/Atom'>
<title>BMC/Intel-BMC/linux.git/net/9p/trans_virtio.c, branch dev</title>
<subtitle>Intel OpenBMC Linux kernel source tree (mirror)</subtitle>
<id>https://git.radix-linux.su/BMC/Intel-BMC/linux.git/atom?h=dev</id>
<link rel='self' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/atom?h=dev'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/'/>
<updated>2015-07-13T16:47:10+00:00</updated>
<entry>
<title>9p/trans_virtio: reset virtio device on remove</title>
<updated>2015-07-13T16:47:10+00:00</updated>
<author>
<name>Pierre Morel</name>
<email>pmorel@linux.vnet.ibm.com</email>
</author>
<published>2015-07-09T12:58:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=ea52bf8eda9832ad30e9f059c5ead8d44f882a53'/>
<id>urn:sha1:ea52bf8eda9832ad30e9f059c5ead8d44f882a53</id>
<content type='text'>
On device shutdown/removal, virtio drivers need to trigger a reset on
the device; if this is neglected, the virtio core will complain about
non-zero device status.

This patch resets the status when the 9p virtio driver is removed
from the system by calling vdev-&gt;config-&gt;reset on the virtio_device
to send a reset to the host virtio device.

Signed-off-by: Pierre Morel &lt;pmorel@linux.vnet.ibm.com&gt;
Reviewed-by: Cornelia Huck &lt;cornelia.huck@de.ibm.com&gt;
Reviewed-by: Michael S. Tsirkin &lt;mst@redhat.com&gt;
Signed-off-by: Michael S. Tsirkin &lt;mst@redhat.com&gt;
</content>
</entry>
<entry>
<title>Merge tag 'for-linus-4.1-merge-window' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs</title>
<updated>2015-04-18T21:45:30+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2015-04-18T21:45:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=dba94f2155f581395ef9608418778e3491b3d470'/>
<id>urn:sha1:dba94f2155f581395ef9608418778e3491b3d470</id>
<content type='text'>
Pull 9pfs updates from Eric Van Hensbergen:
 "Some accumulated cleanup patches for kerneldoc and unused variables as
  well as some lock bug fixes and adding privateport option for RDMA"

* tag 'for-linus-4.1-merge-window' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs:
  net/9p: add a privport option for RDMA transport.
  fs/9p: Initialize status in v9fs_file_do_lock.
  net/9p: Initialize opts-&gt;privport as it should be.
  net/9p: use memcpy() instead of snprintf() in p9_mount_tag_show()
  9p: use unsigned integers for nwqid/count
  9p: do not crash on unknown lock status code
  9p: fix error handling in v9fs_file_do_lock
  9p: remove unused variable in p9_fd_create()
  9p: kerneldoc warning fixes
</content>
</entry>
<entry>
<title>net/9p: switch the guts of p9_client_{read,write}() to iov_iter</title>
<updated>2015-04-12T02:28:25+00:00</updated>
<author>
<name>Al Viro</name>
<email>viro@zeniv.linux.org.uk</email>
</author>
<published>2015-04-01T23:57:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=4f3b35c157e43107cc7e1f1aa06694e8b22e10bb'/>
<id>urn:sha1:4f3b35c157e43107cc7e1f1aa06694e8b22e10bb</id>
<content type='text'>
... and have get_user_pages_fast() mapping fewer pages than requested
to generate a short read/write.

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>net/9p: use memcpy() instead of snprintf() in p9_mount_tag_show()</title>
<updated>2015-03-20T14:34:43+00:00</updated>
<author>
<name>Andrey Ryabinin</name>
<email>a.ryabinin@samsung.com</email>
</author>
<published>2015-01-27T13:00:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=179a5bc4b8cbe68ca675057b960dd805867e41c4'/>
<id>urn:sha1:179a5bc4b8cbe68ca675057b960dd805867e41c4</id>
<content type='text'>
p9_mount_tag_show() uses '%s' format string to print
non-NULL terminated chan-&gt;tag string. This leads
to out of bounds memory read, because format '%s'
implies that string is NULL-terminated.

The length of string is know here, so its simpler and safer
to use memcpy instead of snprintf().

Signed-off-by: Andrey Ryabinin &lt;a.ryabinin@samsung.com&gt;
Signed-off-by: Dominique Martinet &lt;dominique.martinet@cea.fr&gt;
Signed-off-by: Eric Van Hensbergen &lt;ericvh@gmail.com&gt;
</content>
</entry>
<entry>
<title>9p/trans_virtio: fix hot-unplug</title>
<updated>2015-03-13T05:25:41+00:00</updated>
<author>
<name>Michael S. Tsirkin</name>
<email>mst@redhat.com</email>
</author>
<published>2015-03-12T01:23:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=8051a2a518fcf3827a143470083ad6008697ff17'/>
<id>urn:sha1:8051a2a518fcf3827a143470083ad6008697ff17</id>
<content type='text'>
On device hot-unplug, 9p/virtio currently will kfree channel while
it might still be in use.

Of course, it might stay used forever, so it's an extremely ugly hack,
but it seems better than use-after-free that we have now.

[ Unused variable removed, whitespace cleanup, msg single-lined --RR ]
Signed-off-by: Michael S. Tsirkin &lt;mst@redhat.com&gt;
Signed-off-by: Rusty Russell &lt;rusty@rustcorp.com.au&gt;
</content>
</entry>
<entry>
<title>virtio/9p: verify device has config space</title>
<updated>2015-01-21T05:58:45+00:00</updated>
<author>
<name>Michael S. Tsirkin</name>
<email>mst@redhat.com</email>
</author>
<published>2015-01-12T14:23:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=7754f53e944122fa95ef36039d3a5009910ce6fc'/>
<id>urn:sha1:7754f53e944122fa95ef36039d3a5009910ce6fc</id>
<content type='text'>
Some devices might not implement config space access
(e.g. remoteproc used not to - before 3.9).
virtio/9p needs config space access so make it
fail gracefully if not there.

Signed-off-by: Michael S. Tsirkin &lt;mst@redhat.com&gt;
Signed-off-by: Rusty Russell &lt;rusty@rustcorp.com.au&gt;
</content>
</entry>
<entry>
<title>9p/trans_virtio: enable VQs early</title>
<updated>2014-10-14T23:55:04+00:00</updated>
<author>
<name>Michael S. Tsirkin</name>
<email>mst@redhat.com</email>
</author>
<published>2014-10-14T23:52:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=64b4cc3911fe8284dfb3cfdb8065c100b818bab8'/>
<id>urn:sha1:64b4cc3911fe8284dfb3cfdb8065c100b818bab8</id>
<content type='text'>
virtio spec requires drivers to set DRIVER_OK before using VQs.
This is set automatically after probe returns, but virtio 9p device
adds self to channel list within probe, at which point VQ can be
used in violation of the spec.

To fix, call virtio_device_ready before using VQs.

Signed-off-by: Michael S. Tsirkin &lt;mst@redhat.com&gt;
Signed-off-by: Rusty Russell &lt;rusty@rustcorp.com.au&gt;
</content>
</entry>
<entry>
<title>Merge tag 'for-linus-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs</title>
<updated>2014-04-11T21:14:57+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2014-04-11T21:14:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=582076ab16779208e7eb6ce712a9c0a6cc5bafe4'/>
<id>urn:sha1:582076ab16779208e7eb6ce712a9c0a6cc5bafe4</id>
<content type='text'>
Pull 9p changes from Eric Van Hensbergen:
 "A bunch of updates and cleanup within the transport layer,
  particularly with a focus on RDMA"

* tag 'for-linus-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs:
  9pnet_rdma: check token type before int conversion
  9pnet: trans_fd : allocate struct p9_trans_fd and struct p9_conn together.
  9pnet: p9_client-&gt;conn field is unused. Remove it.
  9P: Get rid of REQ_STATUS_FLSH
  9pnet_rdma: add cancelled()
  9pnet_rdma: update request status during send
  9P: Add cancelled() to the transport functions.
  net: Mark function as static in 9p/client.c
  9P: Add memory barriers to protect request fields over cb/rpc threads handoff
</content>
</entry>
<entry>
<title>9P: Add memory barriers to protect request fields over cb/rpc threads handoff</title>
<updated>2014-03-25T21:37:59+00:00</updated>
<author>
<name>Dominique Martinet</name>
<email>dominique.martinet@cea.fr</email>
</author>
<published>2014-01-17T17:31:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=2b6e72ed747f68a038df616efd86744b3644d694'/>
<id>urn:sha1:2b6e72ed747f68a038df616efd86744b3644d694</id>
<content type='text'>
We need barriers to guarantee this pattern works as intended:
[w] req-&gt;rc, 1		[r] req-&gt;status, 1
wmb			rmb
[w] req-&gt;status, 1	[r] req-&gt;rc

Where the wmb ensures that rc gets written before status,
and the rmb ensures that if you observe status == 1, rc is the new value.

Signed-off-by: Dominique Martinet &lt;dominique.martinet@cea.fr&gt;
Signed-off-by: Eric Van Hensbergen &lt;ericvh@gmail.com&gt;
</content>
</entry>
<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.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=b6f52ae2f0d32387bde2b89883e3b64d88b9bfe8'/>
<id>urn:sha1: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>
</entry>
</feed>
