[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <50C0EE8E.3080505@gmail.com>
Date: Thu, 06 Dec 2012 14:14:22 -0500
From: Vlad Yasevich <vyasevich@...il.com>
To: Thomas Graf <tgraf@...g.ch>
CC: linux-sctp@...r.kernel.org, netdev@...r.kernel.org,
Neil Horman <nhorman@...driver.com>
Subject: Re: [PATCH] sctp: Add RCU protection to assoc->transport_addr_list
On 12/06/2012 02:08 PM, Thomas Graf wrote:
> On 12/06/12 at 01:57pm, Vlad Yasevich wrote:
>> On 12/06/2012 01:44 PM, Thomas Graf wrote:
>>> On 12/06/12 at 01:35pm, Vlad Yasevich wrote:
>>>> We may want to mark transports as dead sooner. Probably right about
>>>> the time we pull them off the list.
>>>
>>> We mark it dead in sctp_transport_free() which is called at the
>>> end of sctp_assoc_rm_peer(). Do you want to mark it dead at the
>>> beginning of sctp_assoc_rm_peer() as well? (We still need to
>>> mark in sctp_transport_free() anyway).
>>
>> Crud.. sctp_transport_free() is called directly in places... Hmm...
>> the one in sctp_association_free() may need to be list_del_rcu()...
>
> It's not really needed but it wouldn't be wrong from a
> documentation perspective. The assoc is always unhashed
> while holding head->lock before sctp_association_free()
> and all current RCU readers of transport_addr_list access
> the the assoc while holding a read-lock on head->lock.
>
> Let me respin this patch and do a list_del_rcu() there
> to document the RCU'iness of it.
>
Right, but there may be chunks that have cached association with a ref
before sctp_association_free() is called. Now, after free they may
be looking at the transport list for whatever reason... Most places
check assoc->dead, but I don't want to get caught. So, there is
a remote chance that someone may look at transports and would crash
without rcu.
-vlad
--
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