mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 23:21:31 +00:00
netfilter: nf_conntrack_sip: de-static helper pointers
Helper's ->help hook can run concurrently with itself, so iterating over SIP helpers with static pointer won't work reliably. Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
fca1287a3a
commit
66bf79182d
@ -1193,7 +1193,6 @@ static const struct sip_handler sip_handlers[] = {
|
||||
static int process_sip_response(struct sk_buff *skb,
|
||||
const char **dptr, unsigned int *datalen)
|
||||
{
|
||||
static const struct sip_handler *handler;
|
||||
enum ip_conntrack_info ctinfo;
|
||||
struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
|
||||
unsigned int matchoff, matchlen;
|
||||
@ -1214,6 +1213,8 @@ static int process_sip_response(struct sk_buff *skb,
|
||||
dataoff = matchoff + matchlen + 1;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(sip_handlers); i++) {
|
||||
const struct sip_handler *handler;
|
||||
|
||||
handler = &sip_handlers[i];
|
||||
if (handler->response == NULL)
|
||||
continue;
|
||||
@ -1228,13 +1229,14 @@ static int process_sip_response(struct sk_buff *skb,
|
||||
static int process_sip_request(struct sk_buff *skb,
|
||||
const char **dptr, unsigned int *datalen)
|
||||
{
|
||||
static const struct sip_handler *handler;
|
||||
enum ip_conntrack_info ctinfo;
|
||||
struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
|
||||
unsigned int matchoff, matchlen;
|
||||
unsigned int cseq, i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(sip_handlers); i++) {
|
||||
const struct sip_handler *handler;
|
||||
|
||||
handler = &sip_handlers[i];
|
||||
if (handler->request == NULL)
|
||||
continue;
|
||||
|
Loading…
Reference in New Issue
Block a user