[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Tue, 12 Dec 2006 23:03:34 -0000 (GMT)
From: "Leigh Brown" <leigh@...inno.co.uk>
To: "David Miller" <davem@...emloft.net>
Cc: netdev@...r.kernel.org
Subject: Re: kernel panic with the newly merged md5 signature support
On Tue, December 12, 2006 10:25 pm, David Miller said:
> From: "Leigh Brown" <leigh@...inno.co.uk>
> Date: Tue, 12 Dec 2006 22:22:13 -0000 (GMT)
>
>> I'm not sure what the correct way forward is. Could these functions
>> not be just:
>>
>> struct tcp_md5sig_pool *__tcp_get_md5sig_pool(int cpu)
>> {
>> struct tcp_md5sig_pool **p = tcp_md5_sig_pool;
>> BUG_ON(!p);
>> return *per_cpu_ptr(p, cpu);
>> }
>>
>> void __tcp_put_md5sig_pool(void) {
>> /* nuffin */
>> }
>>
>> In other words, can we assume that the pool is allocated when we call
>> tcp_get_md5sig_pool?
>
> I think the issue is that we need to get a balanced get_cpu()/put_cpu()
> in there somehow.
Well, the inline functions seem okay in that regard, but I'll bow to
your superior judgement.
static inline
struct tcp_md5sig_pool *tcp_get_md5sig_pool(void)
{
int cpu = get_cpu();
struct tcp_md5sig_pool *ret = __tcp_get_md5sig_pool(cpu);
if (!ret)
put_cpu();
return ret;
}
static inline void tcp_put_md5sig_pool(void)
{
__tcp_put_md5sig_pool();
put_cpu();
}
-
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