[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20141015.233459.1141284199701707266.davem@davemloft.net>
Date: Wed, 15 Oct 2014 23:34:59 -0400 (EDT)
From: David Miller <davem@...emloft.net>
To: luto@...capital.net
Cc: dborkman@...hat.com, torvalds@...ux-foundation.org,
kaber@...sh.net, netdev@...r.kernel.org, tgraf@...g.ch
Subject: Re: Netlink mmap tx security?
From: Andy Lutomirski <luto@...capital.net>
Date: Wed, 15 Oct 2014 16:58:39 -0700
> On Wed, Oct 15, 2014 at 4:57 PM, David Miller <davem@...emloft.net> wrote:
>> From: Daniel Borkmann <dborkman@...hat.com>
>> Date: Thu, 16 Oct 2014 01:45:22 +0200
>>
>>> On 10/15/2014 04:01 AM, David Miller wrote:
>>>> From: Andy Lutomirski <luto@...capital.net>
>>>> Date: Tue, 14 Oct 2014 15:16:46 -0700
>>>>
>>>>> It's at least remotely possible that there's something that assumes
>>>>> that assumes that the availability of NETLINK_RX_RING implies
>>>>> NETLINK_TX_RING, which would be unfortunate.
>>>>
>>>> I already found one such case, nlmon :-/
>>>
>>> Hmm, can you elaborate? I currently don't think that nlmon cares
>>> actually.
>>
>> nlmon cares, openvswitch cares, etc:
>
> It'll still work, just slower, right?
>
> + if (setsockopt(sock->fd, SOL_NETLINK, NETLINK_RX_RING, &req,
> sizeof(req)) < 0
> + || setsockopt(sock->fd, SOL_NETLINK, NETLINK_TX_RING, &req,
> sizeof(req)) < 0) {
> + VLOG_INFO("mmap netlink is not supported");
> + return 0;
> + }
So NETLINK_RX_RING succeeds but NETLINK_TX_RING fails, so now the
recvmsg() path will take the RX ring code path because this code
doesn't clean up and undo the setsockopt().
This is the common coding paradigm I've seen in all NETLINK_*_RING
uses.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists