Search Linux Wireless

Re: compiler warning in wireless-testing.

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

 



On Thu, Mar 15, 2012 at 8:59 PM, Johannes Berg
<johannes@xxxxxxxxxxxxxxxx> wrote:
> On Thu, 2012-03-15 at 20:53 +0200, Eliad Peller wrote:
>> On Thu, Mar 15, 2012 at 8:39 PM, Johannes Berg
>> <johannes@xxxxxxxxxxxxxxxx> wrote:
>> > On Thu, 2012-03-15 at 11:37 -0700, Ben Greear wrote:
>> >> Looks like this is the compiler's fault to me..but might be
>> >> worth explicitly initializing the sta variable just to make
>> >> it quiet.
>> >
>> > I disagree, doing that will only hide legitimate warnings if somebody
>> > changes the code. Initializing for compiler happiness is almost always
>> > the worst thing you can do.
>> >
>> what about
>>
>> diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
>> index 6cb5361..96fc201 100644
>> --- a/net/mac80211/mlme.c
>> +++ b/net/mac80211/mlme.c
>> @@ -3094,7 +3094,6 @@ static int ieee80211_prep_connection(struct
>> ieee80211_sub_if_data *sdata,
>>         struct ieee80211_local *local = sdata->local;
>>         struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
>>         struct ieee80211_bss *bss = (void *)cbss->priv;
>> -       struct sta_info *sta;
>>         bool have_sta = false;
>>         int err;
>>
>> @@ -3107,12 +3106,6 @@ static int ieee80211_prep_connection(struct
>> ieee80211_sub_if_data *sdata,
>>                 rcu_read_unlock();
>>         }
>>
>> -       if (!have_sta) {
>> -               sta = sta_info_alloc(sdata, cbss->bssid, GFP_KERNEL);
>> -               if (!sta)
>> -                       return -ENOMEM;
>> -       }
>> -
>>         mutex_lock(&local->mtx);
>>         ieee80211_recalc_idle(sdata->local);
>>         mutex_unlock(&local->mtx);
>> @@ -3123,10 +3116,15 @@ static int ieee80211_prep_connection(struct
>> ieee80211_sub_if_data *sdata,
>>
>>         if (!have_sta) {
>>                 struct ieee80211_supported_band *sband;
>> +               struct sta_info *sta;
>>                 u32 rates = 0, basic_rates = 0;
>>                 bool have_higher_than_11mbit;
>>                 int min_rate = INT_MAX, min_rate_index = -1;
>>
>> +               sta = sta_info_alloc(sdata, cbss->bssid, GFP_KERNEL);
>> +               if (!sta)
>> +                       return -ENOMEM;
>> +
>>                 sband = sdata->local->hw.wiphy->bands[cbss->channel->band];
>>
>>                 ieee80211_get_rates(sband, bss->supp_rates,
>>
>>
>> it also makes the code more clear, imho.
>
> Yeah, I thought about that for a second, but I'm working on changes in
> this area that would essentially require me to revert this again ...
>
> I really want to do the allocation first so the failure path for that is
> easy. On the other hand, I'm adding channel type switching (see my RFC
> patchset) in the middle of this, and unwinding that would be a larger
> change that even touches the device.
>
> What may be possible instead is to replace the second have_sta in the
> second if with "if (sta)", which may make Ben's compiler a bit happier,
> but I have no way of even testing that since my compiler doesn't
> complain to start with.
>
that's possible, but then you'll have to initialize sta anyway :)

Eliad.
--
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