Patchwork [3.5.yuz,extended,stable] Patch "netfilter: nf_nat_sip: fix incorrect handling of EBUSY for" has been added to staging queue

mail settings
Submitter Herton Ronaldo Krzesinski
Date Nov. 13, 2012, 8:34 p.m.
Message ID <>
Download mbox | patch
Permalink /patch/198780/
State New
Headers show


Herton Ronaldo Krzesinski - Nov. 13, 2012, 8:34 p.m.
This is a note to let you know that I have just added a patch titled

    netfilter: nf_nat_sip: fix incorrect handling of EBUSY for

to the linux-3.5.y-queue branch of the 3.5.yuz extended stable tree 
which can be found at:;a=shortlog;h=refs/heads/linux-3.5.y-queue

If you, or anyone else, feels it should not be added to this tree, please 
reply to this email.

For more information about the 3.5.yuz tree, see



From 3a2eea078ed40428beaa609b0cf31e42cd8ff3c3 Mon Sep 17 00:00:00 2001
From: Pablo Neira Ayuso <>
Date: Wed, 29 Aug 2012 15:24:09 +0000
Subject: [PATCH] netfilter: nf_nat_sip: fix incorrect handling of EBUSY for
 RTCP expectation

commit 3f509c689a07a4aa989b426893d8491a7ffcc410 upstream.

We're hitting bug while trying to reinsert an already existing

kernel BUG at kernel/timer.c:895!
invalid opcode: 0000 [#1] SMP
Call Trace:
 [<ffffffffa0069563>] nf_ct_expect_related_report+0x4a0/0x57a [nf_conntrack]
 [<ffffffff812d423a>] ? in4_pton+0x72/0x131
 [<ffffffffa00ca69e>] ip_nat_sdp_media+0xeb/0x185 [nf_nat_sip]
 [<ffffffffa00b5b9b>] set_expected_rtp_rtcp+0x32d/0x39b [nf_conntrack_sip]
 [<ffffffffa00b5f15>] process_sdp+0x30c/0x3ec [nf_conntrack_sip]
 [<ffffffff8103f1eb>] ? irq_exit+0x9a/0x9c
 [<ffffffffa00ca738>] ? ip_nat_sdp_media+0x185/0x185 [nf_nat_sip]

We have to remove the RTP expectation if the RTCP expectation hits EBUSY
since we keep trying with other ports until we succeed.

Reported-by: Rafal Fitt <>
Signed-off-by: Pablo Neira Ayuso <>
Acked-by: David S. Miller <>
Signed-off-by: Herton Ronaldo Krzesinski <>
 net/ipv4/netfilter/nf_nat_sip.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)



diff --git a/net/ipv4/netfilter/nf_nat_sip.c b/net/ipv4/netfilter/nf_nat_sip.c
index ea4a238..bb71caa 100644
--- a/net/ipv4/netfilter/nf_nat_sip.c
+++ b/net/ipv4/netfilter/nf_nat_sip.c
@@ -501,7 +501,10 @@  static unsigned int ip_nat_sdp_media(struct sk_buff *skb, unsigned int dataoff,
 		ret = nf_ct_expect_related(rtcp_exp);
 		if (ret == 0)
-		else if (ret != -EBUSY) {
+		else if (ret == -EBUSY) {
+			nf_ct_unexpect_related(rtp_exp);
+			continue;
+		} else if (ret < 0) {
 			port = 0;