Thread (15 messages) 15 messages, 5 authors, 2012-10-23

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.

-Brian
I 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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help