virtio_net does DMA on the stack when it calls sg_init_one in virtio_set_queues, virtnet_vlan_rx_add_vid, and virtnet_vlan_rx_kill_vid. Michael, I think these are examples we missed somehow when fixing these issues earlier on. virtio_console does it here: sg_init_one(sg, &cpkt, sizeof(cpkt)); This will cause problems on some architectures (Xen at the very least, and it'll cause more subtle problems on other architectures if they start using the DMA API), and it will blow up horribly with virtually mapped stacks. Could you fix these, please? Thanks, Andy
On Fri, Jun 24, 2016 at 06:45:50PM -0700, Andy Lutomirski wrote:> virtio_net does DMA on the stack when it calls sg_init_one in > virtio_set_queues, virtnet_vlan_rx_add_vid, and > virtnet_vlan_rx_kill_vid. Michael, I think these are examples we > missed somehow when fixing these issues earlier on. > > virtio_console does it here: > > sg_init_one(sg, &cpkt, sizeof(cpkt)); > > This will cause problems on some architectures (Xen at the very least, > and it'll cause more subtle problems on other architectures if they > start using the DMA API), and it will blow up horribly with virtually > mapped stacks. > > Could you fix these, please? > > Thanks, > AndyWill do, thanks for the report. -- MST
Apparently Analagous Threads
- DMA from stack in virtio_net and virtio_console
- [PATCH v2 net 2/3] virtio_net: fix adding vids on big-endian
- [PATCH v2 net 2/3] virtio_net: fix adding vids on big-endian
- [PATCH v2 net 1/3] virtio_net: split out ctrl buffer
- [PATCH] virtio_console: Stop doing DMA on the stack