nf/dccp: merge errorpaths
authorIlpo Järvinen <ilpo.jarvinen@helsinki.fi>
Mon, 15 Dec 2008 07:19:02 +0000 (23:19 -0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 15 Dec 2008 07:19:02 +0000 (23:19 -0800)
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/netfilter/xt_dccp.c

index e5d3e867328790f59f18fd630595520406ca5c48..0989f29ade2ea0e559b53e7afac854a2bb09d54a 100644 (file)
@@ -45,10 +45,8 @@ dccp_find_option(u_int8_t option,
        unsigned int optlen = dh->dccph_doff*4 - __dccp_hdr_len(dh);
        unsigned int i;
 
-       if (dh->dccph_doff * 4 < __dccp_hdr_len(dh)) {
-               *hotdrop = true;
-               return false;
-       }
+       if (dh->dccph_doff * 4 < __dccp_hdr_len(dh))
+               goto invalid;
 
        if (!optlen)
                return false;
@@ -57,9 +55,7 @@ dccp_find_option(u_int8_t option,
        op = skb_header_pointer(skb, protoff + optoff, optlen, dccp_optbuf);
        if (op == NULL) {
                /* If we don't have the whole header, drop packet. */
-               spin_unlock_bh(&dccp_buflock);
-               *hotdrop = true;
-               return false;
+               goto partial;
        }
 
        for (i = 0; i < optlen; ) {
@@ -76,6 +72,12 @@ dccp_find_option(u_int8_t option,
 
        spin_unlock_bh(&dccp_buflock);
        return false;
+
+partial:
+       spin_unlock_bh(&dccp_buflock);
+invalid:
+       *hotdrop = true;
+       return false;
 }