Search Linux Wireless

Re: [RFC 2/2] mac80211: Fix bss ref leak.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2013-06-18 at 09:33 -0700, Ben Greear wrote:
> On 06/18/2013 08:26 AM, Johannes Berg wrote:
> > On Mon, 2013-06-17 at 14:32 -0700, greearb@xxxxxxxxxxxxxxx wrote:
> >
> >>   static void ieee80211_destroy_assoc_data(struct ieee80211_sub_if_data *sdata,
> >> -					 bool assoc)
> >> +					 bool assoc, bool put_bss)
> >
> > Do we _really_ need another argument? Shouldn't it always be put in the
> > non-assoc case anyway, at least if non-NULL?
> 
> I don't think so.  Check out the ieee80211_rx_mgmt_assoc_resp method.
> 
>   	if (status_code != WLAN_STATUS_SUCCESS) {
> 		sdata_info(sdata, "%pM denied association (code=%d)\n",
> 			   mgmt->sa, status_code);
> 		ieee80211_destroy_assoc_data(sdata, false, false);
> 
> This passes in false as 'assoc', but we should not free bss here because
> it is being passed back to the calling method, and the return
> code of RX_MGMT_CFG80211_RX_ASSOC means bss should eventually
> be consumed by the cfg80211 logic.
> 
> Of course, this is all 'as far as I can tell'.
> 
> I sort of like the second boolean because it forces the caller to
> think about whether bss should be freed or not...

I just posted a patch to hand it back and never free it in mac80211 at
all, that also allows cfg80211_hold_bss() it across the assoc process
which fixes a (possibly more theoretical) expiry issue.

johannes

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux