Re: [PATCH net-next] sockopt: Make SO_BINDTODEVICE readable
flat view
From: Ben Hutchings <hidden>
Date: 2012-10-22 21:58:27
On Mon, 2012-10-22 at 23:52 +0200, Eric Dumazet wrote:
On Mon, 2012-10-22 at 17:47 -0400, Brian Haley wrote:quoted
On 10/22/2012 05:37 PM, Eric Dumazet wrote:quoted
On Mon, 2012-10-22 at 17:20 -0400, Brian Haley wrote:quoted
It's not much different from what's there: setsockopt("foo"); rename foo -> bar index = getsockopt(); if_indextoname(index) -> "bar" I more raised the issue since you pass a 'char *' to setsockopt() but an 'int *' to getsockopt(), I don't think any other value is non-symmetrical like this. -BrianI meant another cpu can be changing dev->name[] content while the strcpy() is done, and you get a mangled devname, like "for" or "bao" instead of "foo" or "bar"Even when holding the rcu_read_lock()? I'd have to hold the rtnl lock there?Yes, rcu_read_lock() only makes sure the device doesnt disappear. But its name can be changed. You could use a seqcount_t, so that readers dont have to lock rtnl. But do we really want to return a name here, I am not yet convinced.
If setsockopt() takes a name then it makes no sense that getsockopt() would return an index. Perhaps an SO_BINDTOIFINDEX would be useful, but let's not make SO_BINDTODEVICE mean two different things. Ben. -- Ben Hutchings, Staff Engineer, Solarflare Not speaking for my employer; that's the marketing department's job. They asked us to note that Solarflare product names are trademarked.