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