|
@@ -966,7 +966,6 @@ static int set_expected_rtp_rtcp(struct sk_buff *skb, unsigned int protoff,
|
|
|
#endif
|
|
|
skip_expect = 1;
|
|
|
} while (!skip_expect);
|
|
|
- rcu_read_unlock();
|
|
|
|
|
|
base_port = ntohs(tuple.dst.u.udp.port) & ~1;
|
|
|
rtp_port = htons(base_port);
|
|
@@ -980,8 +979,10 @@ static int set_expected_rtp_rtcp(struct sk_buff *skb, unsigned int protoff,
|
|
|
goto err1;
|
|
|
}
|
|
|
|
|
|
- if (skip_expect)
|
|
|
+ if (skip_expect) {
|
|
|
+ rcu_read_unlock();
|
|
|
return NF_ACCEPT;
|
|
|
+ }
|
|
|
|
|
|
rtp_exp = nf_ct_expect_alloc(ct);
|
|
|
if (rtp_exp == NULL)
|
|
@@ -1012,6 +1013,7 @@ static int set_expected_rtp_rtcp(struct sk_buff *skb, unsigned int protoff,
|
|
|
err2:
|
|
|
nf_ct_expect_put(rtp_exp);
|
|
|
err1:
|
|
|
+ rcu_read_unlock();
|
|
|
return ret;
|
|
|
}
|
|
|
|