Re: 9p/RDMA for syzkaller (Was: BUG: corrupted list in p9_read_work)
From: Dmitry Vyukov <dvyukov@google.com>
Date: 2018-11-20 11:21:22
Also in:
lkml
On Sat, Nov 17, 2018 at 9:46 AM, Dominique Martinet [off-list ref] wrote:
Dominique Martinet wrote on Fri, Oct 12, 2018:quoted
Hmm, good point; I hadn't looked at the network level how this is emulated. When I use a single VM I do not see anything with tcpdump on any interface, so I assume the kernel short-cuts the interface in this case. When communicating between two machines there obviously is traffic; it appears to be transported over udp - I see the messages I sent in plain text in the dump and there is only a handful of packets for the whole connecting and teardown so it's definitely much simpler. This might have some knob I am not aware of to force the driver to send udp in the local setup, if we can it's going to be much easier to reimplement the rxe emulation protocol with raw syscalls than what I was describing earlier...I've taken a little bit of time to look at this. Unfortunately, I haven't been able to find any knob to make a single-machine setup send UDP over an interface; would have hoped that playing with multiple interfaces might be a way around this (e.g. use the rxe driver on one interface and listen on the udp port on the other one), but I couldn't get this to work and don't see anything in the code that hints it might be configurable. It seems to realize that the remote IP is assigned locally anyway and while I cannot "bind" to an address that wasn't added to the rxe driver at the rdma_cm level, trying to connect to it never sends any packet to a ncat listening on 4791/udp on that interface... If anyone has an idea, it'd be great! Protocole-wise, once we get that to work it doesn't look very difficult to implement some basic "accept connection and send acks/replies" small server, but we need the first part to work...
I don't understand most of the words here, so I probably won't be of help. Leon told me that there is some kind of software emulation RDMA interface (CONFIG_RDMA_RXE?). Maybe it can be used to create an emulated RDMA interface per test process and use it to communicate with 9p client?