On Tue, December 12, 2006 10:25 pm, David Miller said:
> From: "Leigh Brown" <[EMAIL PROTECTED]>
> 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 [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to