Netdev List
 help / color / mirror / Atom feed
* Re: [net-2.6 PATCH] nete zero kobject in rx_queue_release
From: David Miller @ 2010-11-14 23:15 UTC (permalink / raw)
  To: therbert; +Cc: john.r.fastabend, netdev, eric.dumazet
In-Reply-To: <AANLkTi=1Xzne6HZN-w_3RTeUmqtjGpHPfW211SKvW17w@mail.gmail.com>

From: Tom Herbert <therbert@google.com>
Date: Sun, 14 Nov 2010 14:40:00 -0800

>> So we'll need something like:
>>
>>        if (atomic_dec_and_test(&first->count))
>>                kfree(first);
>>        else
>>                /* clear everything except queue->first */
>>
> 
> The patches to get rid of the separate refcnt should obviate this
> complexity.  Could just clear the queue in kobject release.

True but we'll still need a patch for older kernels.

^ permalink raw reply

* Re: netlink_carrier_on() race condition?
From: Eliad Peller @ 2010-11-15  0:15 UTC (permalink / raw)
  To: netdev; +Cc: Jamal Hadi Salim, David S. Miller
In-Reply-To: <AANLkTin4VvU9vXKT=5mmJFYN==YB5QfjOMo2cHQ0b5bJ@mail.gmail.com>

hi,

i'm still waiting for some response regarding this issue.
i've encountered this concrete issue, and i want to make sure i fully
understand the situation before submitting some redundant patch.

thanks,
Eliad.

On Thu, Nov 4, 2010 at 9:43 PM, Eliad Peller <eliad@wizery.com> wrote:
> hi,
>
> i might be missing something, but i think there is some race condition
> in netlink_carrier_on():
> when calling it, it clears the __LINK_STATE_NOCARRIER flag and
> enqueues a work to do everything needed.
> this cause a period, in which  __LINK_STATE_NOCARRIER is unset (which
> implies IFF_LOWER_UP), but the default qdiscs are not attached yet
> (since the work hasn't been executed yet).
> userspace might get some netlink events (e.g. wireless wext) in which
> the IFF_LOWER_UP flag is set, but the queues are not ready.
>
> shouldn't we clear the flag only after all the work is done?
>
> thanks,
> Eliad.
>

^ permalink raw reply

* linux-next: build failure after merge of the final tree (net tree related)
From: Stephen Rothwell @ 2010-11-15  0:46 UTC (permalink / raw)
  To: David Miller, netdev; +Cc: linux-next, linux-kernel, Eric Dumazet

[-- Attachment #1: Type: text/plain, Size: 2309 bytes --]

Hi Dave,

After merging the final tree, today's linux-next build (powerpc
ppc44x_defconfig) failed like this:

net/ipv4/igmp.c: In function 'ip_mc_inc_group':
net/ipv4/igmp.c:1228: error: implicit declaration of function 'for_each_pmc_rtnl'
net/ipv4/igmp.c:1228: error: expected ';' before '{' token
net/ipv4/igmp.c: In function 'ip_mc_unmap':
net/ipv4/igmp.c:1333: error: expected ';' before 'igmp_group_dropped'
net/ipv4/igmp.c: In function 'ip_mc_remap':
net/ipv4/igmp.c:1343: error: expected ';' before 'igmp_group_added'
net/ipv4/igmp.c: In function 'ip_mc_down':
net/ipv4/igmp.c:1355: error: expected ';' before 'igmp_group_dropped'
net/ipv4/igmp.c: In function 'ip_mc_up':
net/ipv4/igmp.c:1400: error: expected ';' before 'igmp_group_added'
net/ipv4/igmp.c: In function 'ip_mc_del_src':
net/ipv4/igmp.c:1521: error: implicit declaration of function 'for_each_pmc_rcu'
net/ipv4/igmp.c:1521: error: expected ';' before '{' token
net/ipv4/igmp.c: In function 'ip_mc_add_src':
net/ipv4/igmp.c:1693: error: expected ';' before '{' token
net/ipv4/igmp.c: In function 'ip_mc_join_group':
net/ipv4/igmp.c:1800: error: expected ';' before '{' token
net/ipv4/igmp.c: In function 'ip_mc_source':
net/ipv4/igmp.c:1938: error: expected ';' before '{' token
net/ipv4/igmp.c: In function 'ip_mc_msfilter':
net/ipv4/igmp.c:2081: error: expected ';' before '{' token
net/ipv4/igmp.c: In function 'ip_mc_msfget':
net/ipv4/igmp.c:2159: error: expected ';' before '{' token
net/ipv4/igmp.c: In function 'ip_mc_gsfget':
net/ipv4/igmp.c:2212: error: expected ';' before '{' token
net/ipv4/igmp.c:2240: warning: label 'done' defined but not used
net/ipv4/igmp.c: In function 'ip_mc_sf_allow':
net/ipv4/igmp.c:2261: error: expected ';' before '{' token
net/ipv4/igmp.c: In function 'ip_check_mc':
net/ipv4/igmp.c:2326: error: expected ';' before '{' token
net/ipv4/igmp.c:2322: warning: unused variable 'psf'

Caused by commit 1d7138de878d1d4210727c1200193e69596f93b3 ("igmp: RCU
conversion of in_dev->mc_list").  The for_each_pmc_rtnl and
for_each_pmc_rcu definitions are protected by  CONFIG_IP_MULTICAST, but
the uses are not ...

I have reverted that commit for today.

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/

[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]

^ permalink raw reply

* Re: [PATCH] Reduce number of pointer dereferences in IPv4 netfilter LOG module function dump_packet()
From: Eric Dumazet @ 2010-11-15  0:49 UTC (permalink / raw)
  To: Jesper Juhl
  Cc: Netfilter Core Team, netdev, linux-kernel, netfilter,
	netfilter-devel, David S. Miller, Rusty Russell
In-Reply-To: <alpine.LNX.2.00.1011142212310.1253@swampdragon.chaosbits.net>

Le dimanche 14 novembre 2010 à 22:35 +0100, Jesper Juhl a écrit :
> By adding two pointer variables to 
> net/ipv4/netfilter/ipt_LOG.c::dump_packet() we can save 16 bytes of .text 
> and 9 pointer dereferences.
> 
> before this patch we did 20 pointer dereferences and had this object file 
> size:
>    text    data     bss     dec     hex filename
>    6233     600    3080    9913    26b9 net/ipv4/netfilter/ipt_LOG.o
> 
> after this patch we do just 11 pointer dereferences and have this object 
> file size:
>    text    data     bss     dec     hex filename
>    6217     600    3080    9897    26a9 net/ipv4/netfilter/ipt_LOG.o
> 
> 
> Please Cc me on replies.
> 
> 
> Signed-off-by: Jesper Juhl <jj@chaosbits.net>
> ---
>  ipt_LOG.c |   16 ++++++++++------
>  1 file changed, 10 insertions(+), 6 deletions(-)
> 
> diff --git a/net/ipv4/netfilter/ipt_LOG.c b/net/ipv4/netfilter/ipt_LOG.c
> index 72ffc8f..02a92de 100644
> --- a/net/ipv4/netfilter/ipt_LOG.c
> +++ b/net/ipv4/netfilter/ipt_LOG.c
> @@ -39,6 +39,8 @@ static void dump_packet(struct sbuff *m,
>  	struct iphdr _iph;
>  	const struct iphdr *ih;
>  	unsigned int logflags;
> +	struct sock *sk;
> +	struct socket *sk_socket;
>  
>  	if (info->type == NF_LOG_TYPE_LOG)
>  		logflags = info->u.log.logflags;
> @@ -335,13 +337,15 @@ static void dump_packet(struct sbuff *m,
>  	}
>  
>  	/* Max length: 15 "UID=4294967295 " */
> -	if ((logflags & IPT_LOG_UID) && !iphoff && skb->sk) {
> -		read_lock_bh(&skb->sk->sk_callback_lock);
> -		if (skb->sk->sk_socket && skb->sk->sk_socket->file)
> +	sk = skb->sk;
> +	sk_socket = sk->sk_socket;

Really ? sk can be NULL, so you add a NULL dereference.

> +	if ((logflags & IPT_LOG_UID) && !iphoff && sk) {
> +		read_lock_bh(&sk->sk_callback_lock);
> +		if (sk_socket && sk_socket->file)
>  			sb_add(m, "UID=%u GID=%u ",
> -				skb->sk->sk_socket->file->f_cred->fsuid,
> -				skb->sk->sk_socket->file->f_cred->fsgid);
> -		read_unlock_bh(&skb->sk->sk_callback_lock);
> +				sk_socket->file->f_cred->fsuid,
> +				sk_socket->file->f_cred->fsgid);
> +		read_unlock_bh(&sk->sk_callback_lock);
>  	}
>  
>  	/* Max length: 16 "MARK=0xFFFFFFFF " */
> 
> 
> 

Most of these "dereferences" are compiler optimized.

You added a bug in your patch, and make ipt_LOG slower if rule is not
asking for IPT_LOG_UID

^ permalink raw reply

* Re: [PATCH] Reduce number of pointer dereferences in IPv6 netfilter LOG module function dump_packet()
From: Eric Dumazet @ 2010-11-15  0:50 UTC (permalink / raw)
  To: Jesper Juhl
  Cc: Netfilter Core Team, Jan Rekorajski, David S. Miller,
	netfilter-devel, netfilter, netdev, linux-kernel
In-Reply-To: <alpine.LNX.2.00.1011142241260.1253@swampdragon.chaosbits.net>

Le dimanche 14 novembre 2010 à 22:47 +0100, Jesper Juhl a écrit :
> By adding two pointer variables to 
> net/ipv6/netfilter/ip6t_LOG.c::dump_packet() we can save 19 bytes of .text 
> and many pointer dereferences.
> 
> before:
>    text    data     bss     dec     hex filename
>    6258     600    3088    9946    26da net/ipv6/netfilter/ip6t_LOG.o
> 
> after:
>    text    data     bss     dec     hex filename
>    6239     600    3088    9927    26c7 net/ipv6/netfilter/ip6t_LOG.o
> 
> 
> Please Cc me on replies.
> 
> 
> Signed-off-by: Jesper Juhl <jj@chaosbits.net>
> ---
>  ip6t_LOG.c |   16 ++++++++++------
>  1 file changed, 10 insertions(+), 6 deletions(-)
> 
> diff --git a/net/ipv6/netfilter/ip6t_LOG.c b/net/ipv6/netfilter/ip6t_LOG.c
> index 09c8889..51d10a5 100644
> --- a/net/ipv6/netfilter/ip6t_LOG.c
> +++ b/net/ipv6/netfilter/ip6t_LOG.c
> @@ -46,6 +46,8 @@ static void dump_packet(struct sbuff *m,
>  	unsigned int ptr;
>  	unsigned int hdrlen = 0;
>  	unsigned int logflags;
> +	struct sock *sk;
> +	struct socket *sk_socket;
>  
>  	if (info->type == NF_LOG_TYPE_LOG)
>  		logflags = info->u.log.logflags;
> @@ -358,13 +360,15 @@ static void dump_packet(struct sbuff *m,
>  	}
>  
>  	/* Max length: 15 "UID=4294967295 " */
> -	if ((logflags & IP6T_LOG_UID) && recurse && skb->sk) {
> -		read_lock_bh(&skb->sk->sk_callback_lock);
> -		if (skb->sk->sk_socket && skb->sk->sk_socket->file)
> +	sk = skb->sk;
> +	sk_socket = sk->sk_socket;
> +	if ((logflags & IP6T_LOG_UID) && recurse && sk) {
> +		read_lock_bh(&sk->sk_callback_lock);
> +		if (sk_socket && sk_socket->file)
>  			sb_add(m, "UID=%u GID=%u ",
> -				skb->sk->sk_socket->file->f_cred->fsuid,
> -				skb->sk->sk_socket->file->f_cred->fsgid);
> -		read_unlock_bh(&skb->sk->sk_callback_lock);
> +				sk_socket->file->f_cred->fsuid,
> +				sk_socket->file->f_cred->fsgid);
> +		read_unlock_bh(&sk->sk_callback_lock);
>  	}
>  
>  	/* Max length: 16 "MARK=0xFFFFFFFF " */
> 
> 
> 

Same comment than previous patch, you add a NULL dereference.



--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* [PATCH] net/sunrpc/auth_gss/gss_krb5_crypto.c: Use normal negative error value return
From: Joe Perches @ 2010-11-15  2:08 UTC (permalink / raw)
  To: J. Bruce Fields, Neil Brown, Trond Myklebust, David S. Miller
  Cc: linux-nfs, netdev, linux-kernel

And remove unnecessary double semicolon too.

No effect to code, as test is != 0.

Signed-off-by: Joe Perches <joe@perches.com>
---
 net/sunrpc/auth_gss/gss_krb5_crypto.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/net/sunrpc/auth_gss/gss_krb5_crypto.c b/net/sunrpc/auth_gss/gss_krb5_crypto.c
index 75ee993..9576f35 100644
--- a/net/sunrpc/auth_gss/gss_krb5_crypto.c
+++ b/net/sunrpc/auth_gss/gss_krb5_crypto.c
@@ -137,7 +137,7 @@ arcfour_hmac_md5_usage_to_salt(unsigned int usage, u8 salt[4])
 		ms_usage = 13;
 		break;
 	default:
-		return EINVAL;;
+		return -EINVAL;
 	}
 	salt[0] = (ms_usage >> 0) & 0xff;
 	salt[1] = (ms_usage >> 8) & 0xff;

^ permalink raw reply related

* [PATCH/RFC v2] netfilter: nf_conntrack_sip: Handle Cisco 7941/7945 IP phones
From: Kevin Cernekee @ 2010-11-15  2:35 UTC (permalink / raw)
  To: Eric Dumazet, Patrick McHardy, David S. Miller, Alexey Kuznetsov,
	"Pekka Savola (ipv6)" <pek
  Cc: netfilter-devel, netfilter, coreteam, linux-kernel, netdev

[v2 changes:
  Extract the forced port from the Via: header (don't assume 5060)
  Test IPs against the Via: info instead of checking User-Agent
  Call skb_make_writable() before modifying the packet
  Ensure that only replies are mangled
  Change map_addr() so that To: uses the right port
  Change ip_nat_sip_expect() so that Contact: uses the right port
  Make the formatting more consistent with existing code]

Most SIP devices use a source port of 5060/udp on SIP requests, so the
response automatically comes back to port 5060:

phone_ip:5060 -> proxy_ip:5060   REGISTER
proxy_ip:5060 -> phone_ip:5060   100 Trying

The newer Cisco IP phones, however, use a randomly chosen high source
port for the SIP request but expect the response on port 5060:

phone_ip:49173 -> proxy_ip:5060  REGISTER
proxy_ip:5060 -> phone_ip:5060   100 Trying

Standard Linux NAT, with or without nf_nat_sip, will send the reply back
to port 49173, not 5060:

phone_ip:49173 -> proxy_ip:5060  REGISTER
proxy_ip:5060 -> phone_ip:49173  100 Trying

But the phone is not listening on 49173, so it will never see the reply.

This patch modifies nf_*_sip to work around this quirk by extracting
the SIP response port from the Via: header, iff the source IP in the
packet header matches the source IP in the SIP request.

Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
---
 include/linux/netfilter/nf_conntrack_sip.h |    3 +++
 net/ipv4/netfilter/nf_nat_sip.c            |   26 +++++++++++++++++++++++---
 net/netfilter/nf_conntrack_sip.c           |   16 ++++++++++++++++
 3 files changed, 42 insertions(+), 3 deletions(-)

diff --git a/include/linux/netfilter/nf_conntrack_sip.h b/include/linux/netfilter/nf_conntrack_sip.h
index 0ce91d5..feda699 100644
--- a/include/linux/netfilter/nf_conntrack_sip.h
+++ b/include/linux/netfilter/nf_conntrack_sip.h
@@ -2,12 +2,15 @@
 #define __NF_CONNTRACK_SIP_H__
 #ifdef __KERNEL__
 
+#include <linux/types.h>
+
 #define SIP_PORT	5060
 #define SIP_TIMEOUT	3600
 
 struct nf_ct_sip_master {
 	unsigned int	register_cseq;
 	unsigned int	invite_cseq;
+	__be16		forced_dport;
 };
 
 enum sip_expectation_classes {
diff --git a/net/ipv4/netfilter/nf_nat_sip.c b/net/ipv4/netfilter/nf_nat_sip.c
index e40cf78..e5856b0 100644
--- a/net/ipv4/netfilter/nf_nat_sip.c
+++ b/net/ipv4/netfilter/nf_nat_sip.c
@@ -73,6 +73,7 @@ static int map_addr(struct sk_buff *skb, unsigned int dataoff,
 	enum ip_conntrack_info ctinfo;
 	struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
 	enum ip_conntrack_dir dir = CTINFO2DIR(ctinfo);
+	struct nf_conn_help *help = nfct_help(ct);
 	char buffer[sizeof("nnn.nnn.nnn.nnn:nnnnn")];
 	unsigned int buflen;
 	__be32 newaddr;
@@ -85,7 +86,8 @@ static int map_addr(struct sk_buff *skb, unsigned int dataoff,
 	} else if (ct->tuplehash[dir].tuple.dst.u3.ip == addr->ip &&
 		   ct->tuplehash[dir].tuple.dst.u.udp.port == port) {
 		newaddr = ct->tuplehash[!dir].tuple.src.u3.ip;
-		newport = ct->tuplehash[!dir].tuple.src.u.udp.port;
+		newport = help->help.ct_sip_info.forced_dport ? :
+			  ct->tuplehash[!dir].tuple.src.u.udp.port;
 	} else
 		return 1;
 
@@ -121,6 +123,7 @@ static unsigned int ip_nat_sip(struct sk_buff *skb, unsigned int dataoff,
 	enum ip_conntrack_info ctinfo;
 	struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
 	enum ip_conntrack_dir dir = CTINFO2DIR(ctinfo);
+	struct nf_conn_help *help = nfct_help(ct);
 	unsigned int coff, matchoff, matchlen;
 	enum sip_header_types hdr;
 	union nf_inet_addr addr;
@@ -229,6 +232,20 @@ next:
 	    !map_sip_addr(skb, dataoff, dptr, datalen, SIP_HDR_TO))
 		return NF_DROP;
 
+	/* Mangle destination port for Cisco phones, then fix up checksums */
+	if (dir == IP_CT_DIR_REPLY && help->help.ct_sip_info.forced_dport) {
+		struct udphdr *uh;
+
+		if (!skb_make_writable(skb, skb->len))
+			return NF_DROP;
+
+		uh = (struct udphdr *)(skb->data + ip_hdrlen(skb));
+		uh->dest = help->help.ct_sip_info.forced_dport;
+
+		if (!nf_nat_mangle_udp_packet(skb, ct, ctinfo, 0, 0, NULL, 0))
+			return NF_DROP;
+	}
+
 	return NF_ACCEPT;
 }
 
@@ -280,8 +297,10 @@ static unsigned int ip_nat_sip_expect(struct sk_buff *skb, unsigned int dataoff,
 	enum ip_conntrack_info ctinfo;
 	struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
 	enum ip_conntrack_dir dir = CTINFO2DIR(ctinfo);
+	struct nf_conn_help *help = nfct_help(ct);
 	__be32 newip;
 	u_int16_t port;
+	__be16 srcport;
 	char buffer[sizeof("nnn.nnn.nnn.nnn:nnnnn")];
 	unsigned buflen;
 
@@ -294,8 +313,9 @@ static unsigned int ip_nat_sip_expect(struct sk_buff *skb, unsigned int dataoff,
 	/* If the signalling port matches the connection's source port in the
 	 * original direction, try to use the destination port in the opposite
 	 * direction. */
-	if (exp->tuple.dst.u.udp.port ==
-	    ct->tuplehash[dir].tuple.src.u.udp.port)
+	srcport = help->help.ct_sip_info.forced_dport ? :
+		  ct->tuplehash[dir].tuple.src.u.udp.port;
+	if (exp->tuple.dst.u.udp.port == srcport)
 		port = ntohs(ct->tuplehash[!dir].tuple.dst.u.udp.port);
 	else
 		port = ntohs(exp->tuple.dst.u.udp.port);
diff --git a/net/netfilter/nf_conntrack_sip.c b/net/netfilter/nf_conntrack_sip.c
index bcf47eb..ee4ad59 100644
--- a/net/netfilter/nf_conntrack_sip.c
+++ b/net/netfilter/nf_conntrack_sip.c
@@ -1363,8 +1363,24 @@ static int process_sip_request(struct sk_buff *skb, unsigned int dataoff,
 {
 	enum ip_conntrack_info ctinfo;
 	struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
+	struct nf_conn_help *help = nfct_help(ct);
+	enum ip_conntrack_dir dir = CTINFO2DIR(ctinfo);
 	unsigned int matchoff, matchlen;
 	unsigned int cseq, i;
+	union nf_inet_addr addr;
+	__be16 port;
+
+	/* Many Cisco IP phones use a high source port for SIP requests, but
+	 * listen for the response on port 5060.  If we are the local
+	 * router for one of these phones, save the port number from the
+	 * Via: header so that nf_nat_sip can redirect the responses to
+	 * the correct port.
+	 */
+	if (ct_sip_parse_header_uri(ct, *dptr, NULL, *datalen,
+				    SIP_HDR_VIA_UDP, NULL, &matchoff,
+				    &matchlen, &addr, &port) > 0 &&
+	    nf_inet_addr_cmp(&addr, &ct->tuplehash[dir].tuple.src.u3))
+		help->help.ct_sip_info.forced_dport = port;
 
 	for (i = 0; i < ARRAY_SIZE(sip_handlers); i++) {
 		const struct sip_handler *handler;
-- 
1.7.0.4


^ permalink raw reply related

* Re: [PATCH/RFC] netfilter: nf_conntrack_sip: Handle quirky Cisco phones
From: Kevin Cernekee @ 2010-11-15  3:01 UTC (permalink / raw)
  To: Eric Dumazet
  Cc: Patrick McHardy, David S. Miller, Alexey Kuznetsov,
	Pekka Savola (ipv6), James Morris, Hideaki YOSHIFUJI,
	netfilter-devel, netfilter, coreteam, linux-kernel, netdev
In-Reply-To: <1289764664.2743.110.camel@edumazet-laptop>

On Sun, Nov 14, 2010 at 11:57 AM, Eric Dumazet <eric.dumazet@gmail.com> wrote:
> Via: SIP/2.0/UDP 192.168.2.28:5060;branch=xxxxxxxx
>
>
> Maybe a fix would be to use this "5060" port, instead of hardcoding it
> like you did ?

Just posted v2... appreciate the advice so far.

My new code in process_sip_request() looks for an address match + port
mismatch between the IP source and the Via: header.  This is how it
tries to detect whether we are talking directly to an afflicted Cisco
phone.  If the address doesn't match, I assume the request is passing
through a non-SIP-aware NAT router so there is no special handling.

Assuming we can reliably detect the "quirky phone" condition, is there
any way to just trick Netfilter into thinking the source port was 5060
instead of 49xxx?  3/4ths of the patch could probably be eliminated if
we could overwrite the port number inside tuplehash.

^ permalink raw reply

* [PATCH 00/44] remove unnecessary semicolons
From: Joe Perches @ 2010-11-15  3:04 UTC (permalink / raw)
  To: Jiri Kosina
  Cc: linux-arm-kernel, linux-kernel, linux-tegra, microblaze-uclinux,
	user-mode-linux-devel, user-mode-linux-user, cpufreq, linux-i2c,
	netdev, linux-media, linux-mmc, e1000-devel, linux-wireless,
	ath9k-devel, platform-driver-x86, ibm-acpi-devel, linux-s390,
	linux-scsi, spi-devel-general, devel, linux-usb, xen-devel,
	virtualization, v9fs-developer, ceph-devel, logfs, linux-nfs,
	ocfs2-devel, linu

ya trivial series...

Joe Perches (44):
  arch/arm: Remove unnecessary semicolons
  arch/microblaze: Remove unnecessary semicolons
  arch/um: Remove unnecessary semicolons
  drivers/cpufreq: Remove unnecessary semicolons
  drivers/gpio: Remove unnecessary semicolons
  drivers/i2c: Remove unnecessary semicolons
  drivers/isdn: Remove unnecessary semicolons
  drivers/leds: Remove unnecessary semicolons
  drivers/media/video: Remove unnecessary semicolons
  drivers/misc: Remove unnecessary semicolons
  drivers/mmc: Remove unnecessary semicolons
  drivers/net/bnx2x: Remove unnecessary semicolons
  drivers/net/e1000e: Remove unnecessary semicolons
  drivers/net/ixgbe: Remove unnecessary semicolons
  drivers/net/vxge: Remove unnecessary semicolons
  drivers/net/wireless/ath: Remove unnecessary semicolons
  drivers/net/wireless/iwlwifi: Remove unnecessary semicolons
  drivers/net/cnic.c: Remove unnecessary semicolons
  drivers/platform/x86: Remove unnecessary semicolons
  drivers/power: Remove unnecessary semicolons
  drivers/s390/net: Remove unnecessary semicolons
  drivers/scsi/be2iscsi: Remove unnecessary semicolons
  drivers/scsi/bfa: Remove unnecessary semicolons
  drivers/scsi/lpfc: Remove unnecessary semicolons
  drivers/scsi/pm8001: Remove unnecessary semicolons
  drivers/scsi/qla2xxx: Remove unnecessary semicolons
  drivers/serial: Remove unnecessary semicolons
  drivers/spi: Remove unnecessary semicolons
  drivers/staging: Remove unnecessary semicolons
  drivers/usb/gadget: Remove unnecessary semicolons
  drivers/xen: Remove unnecessary semicolons
  fs/9p: Remove unnecessary semicolons
  fs/ceph: Remove unnecessary semicolons
  fs/logfs: Remove unnecessary semicolons
  fs/nfs: Remove unnecessary semicolons
  fs/ocfs2: Remove unnecessary semicolons
  fs/ubifs: Remove unnecessary semicolons
  include/linux/if_macvlan.h: Remove unnecessary semicolons
  include/net/caif/cfctrl.h: Remove unnecessary semicolons
  mm/hugetlb.c: Remove unnecessary semicolons
  net/ipv6/mcast.c: Remove unnecessary semicolons
  net/sunrpc/addr.c: Remove unnecessary semicolons
  sound/core/pcm_lib.c: Remove unnecessary semicolons
  sound/soc/codecs: Remove unnecessary semicolons

 arch/arm/mach-at91/at91cap9_devices.c              |    2 +-
 arch/arm/mach-at91/at91sam9g45_devices.c           |    2 +-
 arch/arm/mach-at91/at91sam9rl_devices.c            |    2 +-
 arch/arm/mach-nuc93x/time.c                        |    2 +-
 arch/arm/mach-tegra/tegra2_clocks.c                |    2 +-
 arch/arm/mach-w90x900/cpu.c                        |    2 +-
 arch/arm/plat-mxc/irq.c                            |    2 +-
 arch/microblaze/lib/memmove.c                      |    2 +-
 arch/um/drivers/mmapper_kern.c                     |    2 +-
 drivers/cpufreq/cpufreq_conservative.c             |    2 +-
 drivers/gpio/langwell_gpio.c                       |    2 +-
 drivers/i2c/busses/i2c-designware.c                |    2 +-
 drivers/isdn/hardware/mISDN/mISDNinfineon.c        |    4 ++--
 drivers/isdn/hardware/mISDN/mISDNisar.c            |    2 +-
 drivers/leds/leds-mc13783.c                        |    2 +-
 drivers/media/video/cx88/cx88-blackbird.c          |    2 +-
 drivers/media/video/davinci/vpfe_capture.c         |    2 +-
 drivers/media/video/em28xx/em28xx-cards.c          |    2 +-
 drivers/misc/bmp085.c                              |    2 +-
 drivers/misc/isl29020.c                            |    2 +-
 drivers/mmc/host/davinci_mmc.c                     |    2 +-
 drivers/net/bnx2x/bnx2x_link.c                     |    4 ++--
 drivers/net/bnx2x/bnx2x_main.c                     |    2 +-
 drivers/net/cnic.c                                 |    2 +-
 drivers/net/e1000e/netdev.c                        |    2 +-
 drivers/net/ixgbe/ixgbe_sriov.c                    |    2 +-
 drivers/net/vxge/vxge-main.c                       |    2 +-
 drivers/net/wireless/ath/ath9k/htc.h               |    2 +-
 drivers/net/wireless/iwlwifi/iwl-agn.c             |    2 +-
 drivers/platform/x86/classmate-laptop.c            |    2 +-
 drivers/platform/x86/thinkpad_acpi.c               |    2 +-
 drivers/power/intel_mid_battery.c                  |    2 +-
 drivers/s390/net/qeth_core_sys.c                   |    2 +-
 drivers/scsi/be2iscsi/be_main.c                    |    4 ++--
 drivers/scsi/bfa/bfa_fcs_lport.c                   |    2 +-
 drivers/scsi/lpfc/lpfc_bsg.c                       |    2 +-
 drivers/scsi/pm8001/pm8001_init.c                  |    2 +-
 drivers/scsi/qla2xxx/qla_isr.c                     |    4 ++--
 drivers/scsi/qla2xxx/qla_nx.c                      |    2 +-
 drivers/serial/mrst_max3110.c                      |    2 +-
 drivers/spi/amba-pl022.c                           |    2 +-
 drivers/spi/spi_nuc900.c                           |    2 +-
 .../staging/ath6kl/hif/sdio/linux_sdio/src/hif.c   |    2 +-
 drivers/staging/ath6kl/os/linux/ar6000_drv.c       |    2 +-
 drivers/staging/bcm/InterfaceInit.c                |    2 +-
 drivers/staging/bcm/InterfaceIsr.c                 |    2 +-
 drivers/staging/bcm/Misc.c                         |    4 ++--
 .../comedi/drivers/addi-data/APCI1710_Tor.c        |    2 +-
 .../comedi/drivers/addi-data/hwdrv_apci1500.c      |    2 +-
 .../comedi/drivers/addi-data/hwdrv_apci1516.c      |    2 +-
 .../comedi/drivers/addi-data/hwdrv_apci3501.c      |    2 +-
 drivers/staging/comedi/drivers/amplc_pci230.c      |    2 +-
 drivers/staging/comedi/drivers/cb_das16_cs.c       |    2 +-
 drivers/staging/comedi/drivers/comedi_bond.c       |    2 +-
 drivers/staging/crystalhd/crystalhd_hw.c           |    2 +-
 drivers/staging/go7007/go7007-driver.c             |    2 +-
 drivers/staging/iio/accel/lis3l02dq_ring.c         |    2 +-
 .../staging/intel_sst/intel_sst_drv_interface.c    |    4 ++--
 drivers/staging/keucr/smilmain.c                   |    4 ++--
 drivers/staging/keucr/smilsub.c                    |    4 ++--
 drivers/staging/msm/lcdc_toshiba_wvga_pt.c         |    2 +-
 drivers/staging/rt2860/common/cmm_data_pci.c       |    4 ++--
 drivers/staging/rt2860/rt_linux.c                  |    2 +-
 drivers/staging/rt2860/rtmp.h                      |    2 +-
 drivers/staging/rtl8192e/ieee80211/ieee80211_tx.c  |    2 +-
 drivers/staging/rtl8192e/r819xE_phy.c              |    2 +-
 drivers/staging/rtl8192u/ieee80211/ieee80211_tx.c  |    2 +-
 drivers/staging/rtl8192u/r8192U_core.c             |    2 +-
 drivers/staging/rtl8192u/r819xU_phy.c              |    2 +-
 drivers/staging/rtl8712/rtl8712_efuse.c            |    2 +-
 drivers/staging/rtl8712/rtl8712_xmit.c             |    2 +-
 drivers/staging/rtl8712/rtl871x_xmit.c             |    2 +-
 drivers/staging/tidspbridge/core/tiomap3430.c      |    4 ++--
 drivers/staging/tidspbridge/rmgr/nldr.c            |    2 +-
 drivers/staging/vt6655/card.c                      |    2 +-
 drivers/staging/vt6655/iwctl.c                     |    2 +-
 drivers/staging/vt6655/wpa2.c                      |    4 ++--
 drivers/staging/vt6656/baseband.c                  |    2 +-
 drivers/staging/vt6656/iwctl.c                     |    2 +-
 drivers/staging/vt6656/power.c                     |    2 +-
 drivers/staging/vt6656/wpa2.c                      |    4 ++--
 drivers/usb/gadget/f_fs.c                          |    2 +-
 drivers/xen/swiotlb-xen.c                          |    2 +-
 fs/9p/acl.c                                        |    2 +-
 fs/9p/xattr.c                                      |    2 +-
 fs/ceph/mds_client.c                               |    2 +-
 fs/logfs/readwrite.c                               |    2 +-
 fs/nfs/getroot.c                                   |    2 +-
 fs/ocfs2/refcounttree.c                            |    2 +-
 fs/ubifs/scan.c                                    |    2 +-
 include/linux/if_macvlan.h                         |    2 +-
 include/net/caif/cfctrl.h                          |    2 +-
 mm/hugetlb.c                                       |    2 +-
 net/ipv6/mcast.c                                   |    2 +-
 net/sunrpc/addr.c                                  |    2 +-
 sound/core/pcm_lib.c                               |    2 +-
 sound/soc/codecs/wm8904.c                          |    2 +-
 sound/soc/codecs/wm8940.c                          |    1 -
 sound/soc/codecs/wm8993.c                          |    2 +-
 sound/soc/codecs/wm_hubs.c                         |    2 +-
 100 files changed, 111 insertions(+), 112 deletions(-)

-- 
1.7.3.1.g432b3.dirty


^ permalink raw reply

* [PATCH 12/44] drivers/net/bnx2x: Remove unnecessary semicolons
From: Joe Perches @ 2010-11-15  3:04 UTC (permalink / raw)
  To: Jiri Kosina; +Cc: Eilon Greenstein, netdev, linux-kernel
In-Reply-To: <cover.1289789604.git.joe@perches.com>

Signed-off-by: Joe Perches <joe@perches.com>
---
 drivers/net/bnx2x/bnx2x_link.c |    4 ++--
 drivers/net/bnx2x/bnx2x_main.c |    2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/bnx2x/bnx2x_link.c b/drivers/net/bnx2x/bnx2x_link.c
index 5809196..38aeffe 100644
--- a/drivers/net/bnx2x/bnx2x_link.c
+++ b/drivers/net/bnx2x/bnx2x_link.c
@@ -3904,7 +3904,7 @@ static u8 bnx2x_8726_read_sfp_module_eeprom(struct bnx2x_phy *phy,
 			      MDIO_PMA_REG_SFP_TWO_WIRE_CTRL, &val);
 		if ((val & MDIO_PMA_REG_SFP_TWO_WIRE_CTRL_STATUS_MASK) ==
 		    MDIO_PMA_REG_SFP_TWO_WIRE_STATUS_IDLE)
-			return 0;;
+			return 0;
 		msleep(1);
 	}
 	return -EINVAL;
@@ -3988,7 +3988,7 @@ static u8 bnx2x_8727_read_sfp_module_eeprom(struct bnx2x_phy *phy,
 			      MDIO_PMA_REG_SFP_TWO_WIRE_CTRL, &val);
 		if ((val & MDIO_PMA_REG_SFP_TWO_WIRE_CTRL_STATUS_MASK) ==
 		    MDIO_PMA_REG_SFP_TWO_WIRE_STATUS_IDLE)
-			return 0;;
+			return 0;
 		msleep(1);
 	}
 
diff --git a/drivers/net/bnx2x/bnx2x_main.c b/drivers/net/bnx2x/bnx2x_main.c
index e9ad16f..7ffcb08 100644
--- a/drivers/net/bnx2x/bnx2x_main.c
+++ b/drivers/net/bnx2x/bnx2x_main.c
@@ -8078,7 +8078,7 @@ static void __devinit bnx2x_get_port_hwinfo(struct bnx2x *bp)
 	int port = BP_PORT(bp);
 	u32 val, val2;
 	u32 config;
-	u32 ext_phy_type, ext_phy_config;;
+	u32 ext_phy_type, ext_phy_config;
 
 	bp->link_params.bp = bp;
 	bp->link_params.port = port;
-- 
1.7.3.1.g432b3.dirty

^ permalink raw reply related

* [PATCH 13/44] drivers/net/e1000e: Remove unnecessary semicolons
From: Joe Perches @ 2010-11-15  3:04 UTC (permalink / raw)
  To: Jiri Kosina
  Cc: e1000-devel, Bruce Allan, Jesse Brandeburg, linux-kernel,
	Greg Rose, John Ronciak, Jeff Kirsher, netdev
In-Reply-To: <cover.1289789604.git.joe@perches.com>

Signed-off-by: Joe Perches <joe@perches.com>
---
 drivers/net/e1000e/netdev.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c
index c4ca162..a6d54e4 100644
--- a/drivers/net/e1000e/netdev.c
+++ b/drivers/net/e1000e/netdev.c
@@ -4595,7 +4595,7 @@ dma_error:
 			i += tx_ring->count;
 		i--;
 		buffer_info = &tx_ring->buffer_info[i];
-		e1000_put_txbuf(adapter, buffer_info);;
+		e1000_put_txbuf(adapter, buffer_info);
 	}
 
 	return 0;
-- 
1.7.3.1.g432b3.dirty


------------------------------------------------------------------------------
Centralized Desktop Delivery: Dell and VMware Reference Architecture
Simplifying enterprise desktop deployment and management using
Dell EqualLogic storage and VMware View: A highly scalable, end-to-end
client virtualization framework. Read more!
http://p.sf.net/sfu/dell-eql-dev2dev
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit http://communities.intel.com/community/wired

^ permalink raw reply related

* [PATCH 14/44] drivers/net/ixgbe: Remove unnecessary semicolons
From: Joe Perches @ 2010-11-15  3:04 UTC (permalink / raw)
  To: Jiri Kosina
  Cc: e1000-devel, Bruce Allan, Jesse Brandeburg, linux-kernel,
	Greg Rose, John Ronciak, Jeff Kirsher, netdev
In-Reply-To: <cover.1289789604.git.joe@perches.com>

Signed-off-by: Joe Perches <joe@perches.com>
---
 drivers/net/ixgbe/ixgbe_sriov.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ixgbe/ixgbe_sriov.c b/drivers/net/ixgbe/ixgbe_sriov.c
index 5428153..93f40bc 100644
--- a/drivers/net/ixgbe/ixgbe_sriov.c
+++ b/drivers/net/ixgbe/ixgbe_sriov.c
@@ -68,7 +68,7 @@ static int ixgbe_set_vf_multicasts(struct ixgbe_adapter *adapter,
 	 * addresses
 	 */
 	for (i = 0; i < entries; i++) {
-		vfinfo->vf_mc_hashes[i] = hash_list[i];;
+		vfinfo->vf_mc_hashes[i] = hash_list[i];
 	}
 
 	for (i = 0; i < vfinfo->num_vf_mc_hashes; i++) {
-- 
1.7.3.1.g432b3.dirty


------------------------------------------------------------------------------
Centralized Desktop Delivery: Dell and VMware Reference Architecture
Simplifying enterprise desktop deployment and management using
Dell EqualLogic storage and VMware View: A highly scalable, end-to-end
client virtualization framework. Read more!
http://p.sf.net/sfu/dell-eql-dev2dev
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit http://communities.intel.com/community/wired

^ permalink raw reply related

* [PATCH 15/44] drivers/net/vxge: Remove unnecessary semicolons
From: Joe Perches @ 2010-11-15  3:04 UTC (permalink / raw)
  To: Jiri Kosina
  Cc: Ramkrishna Vepa, Sivakumar Subramani, Sreenivasa Honnur,
	Jon Mason, netdev, linux-kernel
In-Reply-To: <cover.1289789604.git.joe@perches.com>

Signed-off-by: Joe Perches <joe@perches.com>
---
 drivers/net/vxge/vxge-main.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/vxge/vxge-main.c b/drivers/net/vxge/vxge-main.c
index 813829f..93e80c5 100644
--- a/drivers/net/vxge/vxge-main.c
+++ b/drivers/net/vxge/vxge-main.c
@@ -2062,7 +2062,7 @@ static irqreturn_t vxge_isr_napi(int irq, void *dev_id)
 	struct __vxge_hw_device *hldev;
 	u64 reason;
 	enum vxge_hw_status status;
-	struct vxgedev *vdev = (struct vxgedev *) dev_id;;
+	struct vxgedev *vdev = (struct vxgedev *)dev_id;
 
 	vxge_debug_intr(VXGE_TRACE, "%s:%d", __func__, __LINE__);
 
-- 
1.7.3.1.g432b3.dirty

^ permalink raw reply related

* [PATCH 16/44] drivers/net/wireless/ath: Remove unnecessary semicolons
From: Joe Perches @ 2010-11-15  3:04 UTC (permalink / raw)
  To: Jiri Kosina
  Cc: Luis R. Rodriguez, Jouni Malinen, Vasanthakumar Thiagarajan,
	Senthil Balasubramanian, John W. Linville, linux-wireless,
	ath9k-devel, netdev, linux-kernel
In-Reply-To: <cover.1289789604.git.joe@perches.com>

Signed-off-by: Joe Perches <joe@perches.com>
---
 drivers/net/wireless/ath/ath9k/htc.h |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/htc.h b/drivers/net/wireless/ath/ath9k/htc.h
index 75ecf6a..4c98b93 100644
--- a/drivers/net/wireless/ath/ath9k/htc.h
+++ b/drivers/net/wireless/ath/ath9k/htc.h
@@ -434,7 +434,7 @@ void ath9k_htc_beaconep(void *drv_priv, struct sk_buff *skb,
 
 void ath9k_htc_station_work(struct work_struct *work);
 void ath9k_htc_aggr_work(struct work_struct *work);
-void ath9k_ani_work(struct work_struct *work);;
+void ath9k_ani_work(struct work_struct *work);
 
 int ath9k_tx_init(struct ath9k_htc_priv *priv);
 void ath9k_tx_tasklet(unsigned long data);
-- 
1.7.3.1.g432b3.dirty

^ permalink raw reply related

* [PATCH 17/44] drivers/net/wireless/iwlwifi: Remove unnecessary semicolons
From: Joe Perches @ 2010-11-15  3:04 UTC (permalink / raw)
  To: Jiri Kosina
  Cc: Reinette Chatre, Wey-Yi Guy, Intel Linux Wireless,
	John W. Linville, linux-wireless, netdev, linux-kernel
In-Reply-To: <cover.1289789604.git.joe@perches.com>

Signed-off-by: Joe Perches <joe@perches.com>
---
 drivers/net/wireless/iwlwifi/iwl-agn.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index c2636a7..f293fb6 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -2420,7 +2420,7 @@ static const char *desc_lookup(u32 num)
 	max = ARRAY_SIZE(advanced_lookup) - 1;
 	for (i = 0; i < max; i++) {
 		if (advanced_lookup[i].num == num)
-			break;;
+			break;
 	}
 	return advanced_lookup[i].name;
 }
-- 
1.7.3.1.g432b3.dirty

^ permalink raw reply related

* [PATCH 18/44] drivers/net/cnic.c: Remove unnecessary semicolons
From: Joe Perches @ 2010-11-15  3:04 UTC (permalink / raw)
  To: Jiri Kosina; +Cc: netdev, linux-kernel
In-Reply-To: <cover.1289789604.git.joe@perches.com>

Signed-off-by: Joe Perches <joe@perches.com>
---
 drivers/net/cnic.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/cnic.c b/drivers/net/cnic.c
index 92bac19..594ca9c 100644
--- a/drivers/net/cnic.c
+++ b/drivers/net/cnic.c
@@ -1695,7 +1695,7 @@ static int cnic_bnx2x_iscsi_ofld1(struct cnic_dev *dev, struct kwqe *wqes[],
 		*work = num;
 		return -EINVAL;
 	}
-	*work = 2 + req2->num_additional_wqes;;
+	*work = 2 + req2->num_additional_wqes;
 
 	l5_cid = req1->iscsi_conn_id;
 	if (l5_cid >= MAX_ISCSI_TBL_SZ)
-- 
1.7.3.1.g432b3.dirty

^ permalink raw reply related

* [PATCH 38/44] include/linux/if_macvlan.h: Remove unnecessary semicolons
From: Joe Perches @ 2010-11-15  3:04 UTC (permalink / raw)
  To: Jiri Kosina; +Cc: Patrick McHardy, netdev, linux-kernel
In-Reply-To: <cover.1289789604.git.joe@perches.com>

Signed-off-by: Joe Perches <joe@perches.com>
---
 include/linux/if_macvlan.h |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/include/linux/if_macvlan.h b/include/linux/if_macvlan.h
index 8a2fd66..ac96a2d 100644
--- a/include/linux/if_macvlan.h
+++ b/include/linux/if_macvlan.h
@@ -69,7 +69,7 @@ static inline void macvlan_count_rx(const struct macvlan_dev *vlan,
 	rx_stats = this_cpu_ptr(vlan->rx_stats);
 	if (likely(success)) {
 		u64_stats_update_begin(&rx_stats->syncp);
-		rx_stats->rx_packets++;;
+		rx_stats->rx_packets++;
 		rx_stats->rx_bytes += len;
 		if (multicast)
 			rx_stats->rx_multicast++;
-- 
1.7.3.1.g432b3.dirty

^ permalink raw reply related

* [PATCH 42/44] net/sunrpc/addr.c: Remove unnecessary semicolons
From: Joe Perches @ 2010-11-15  3:05 UTC (permalink / raw)
  To: Jiri Kosina
  Cc: J. Bruce Fields, Neil Brown, Trond Myklebust, David S. Miller,
	linux-nfs-u79uwXL29TY76Z2rM5mHXA, netdev-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <cover.1289789604.git.joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org>

Signed-off-by: Joe Perches <joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org>
---
 net/sunrpc/addr.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/net/sunrpc/addr.c b/net/sunrpc/addr.c
index 1419d0c..4195233 100644
--- a/net/sunrpc/addr.c
+++ b/net/sunrpc/addr.c
@@ -151,7 +151,7 @@ static size_t rpc_pton4(const char *buf, const size_t buflen,
 		return 0;
 
 	sin->sin_family = AF_INET;
-	return sizeof(struct sockaddr_in);;
+	return sizeof(struct sockaddr_in);
 }
 
 #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
-- 
1.7.3.1.g432b3.dirty

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related

* [PATCH 07/44] drivers/isdn: Remove unnecessary semicolons
From: Joe Perches @ 2010-11-15  3:04 UTC (permalink / raw)
  To: Jiri Kosina; +Cc: Karsten Keil, netdev, linux-kernel
In-Reply-To: <cover.1289789604.git.joe@perches.com>

Signed-off-by: Joe Perches <joe@perches.com>
---
 drivers/isdn/hardware/mISDN/mISDNinfineon.c |    4 ++--
 drivers/isdn/hardware/mISDN/mISDNisar.c     |    2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/isdn/hardware/mISDN/mISDNinfineon.c b/drivers/isdn/hardware/mISDN/mISDNinfineon.c
index e90db88..bc0529a 100644
--- a/drivers/isdn/hardware/mISDN/mISDNinfineon.c
+++ b/drivers/isdn/hardware/mISDN/mISDNinfineon.c
@@ -420,7 +420,7 @@ enable_hwirq(struct inf_hw *hw)
 		break;
 	case INF_NICCY:
 		val = inl((u32)hw->cfg.start + NICCY_IRQ_CTRL_REG);
-		val |= NICCY_IRQ_ENABLE;;
+		val |= NICCY_IRQ_ENABLE;
 		outl(val, (u32)hw->cfg.start + NICCY_IRQ_CTRL_REG);
 		break;
 	case INF_SCT_1:
@@ -924,7 +924,7 @@ setup_instance(struct inf_hw *card)
 		mISDNipac_init(&card->ipac, card);
 
 	if (card->ipac.isac.dch.dev.Bprotocols == 0)
-		goto error_setup;;
+		goto error_setup;
 
 	err = mISDN_register_device(&card->ipac.isac.dch.dev,
 		&card->pdev->dev, card->name);
diff --git a/drivers/isdn/hardware/mISDN/mISDNisar.c b/drivers/isdn/hardware/mISDN/mISDNisar.c
index 38eb314..d13fa5b 100644
--- a/drivers/isdn/hardware/mISDN/mISDNisar.c
+++ b/drivers/isdn/hardware/mISDN/mISDNisar.c
@@ -264,7 +264,7 @@ load_firmware(struct isar_hw *isar, const u8 *buf, int size)
 			while (noc) {
 				val = le16_to_cpu(*sp++);
 				*mp++ = val >> 8;
-				*mp++ = val & 0xFF;;
+				*mp++ = val & 0xFF;
 				noc--;
 			}
 			spin_lock_irqsave(isar->hwlock, flags);
-- 
1.7.3.1.g432b3.dirty


^ permalink raw reply related

* [PATCH 39/44] include/net/caif/cfctrl.h: Remove unnecessary semicolons
From: Joe Perches @ 2010-11-15  3:04 UTC (permalink / raw)
  To: Jiri Kosina; +Cc: Sjur Braendeland, David S. Miller, netdev, linux-kernel
In-Reply-To: <cover.1289789604.git.joe@perches.com>

Signed-off-by: Joe Perches <joe@perches.com>
---
 include/net/caif/cfctrl.h |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/include/net/caif/cfctrl.h b/include/net/caif/cfctrl.h
index 9402543..e54f639 100644
--- a/include/net/caif/cfctrl.h
+++ b/include/net/caif/cfctrl.h
@@ -51,7 +51,7 @@ struct cfctrl_rsp {
 	void (*restart_rsp)(void);
 	void (*radioset_rsp)(void);
 	void (*reject_rsp)(struct cflayer *layer, u8 linkid,
-				struct cflayer *client_layer);;
+				struct cflayer *client_layer);
 };
 
 /* Link Setup Parameters for CAIF-Links. */
-- 
1.7.3.1.g432b3.dirty


^ permalink raw reply related

* [PATCH 41/44] net/ipv6/mcast.c: Remove unnecessary semicolons
From: Joe Perches @ 2010-11-15  3:05 UTC (permalink / raw)
  To: Jiri Kosina
  Cc: David S. Miller, Alexey Kuznetsov, Pekka Savola (ipv6),
	James Morris, Hideaki YOSHIFUJI, Patrick McHardy, netdev,
	linux-kernel
In-Reply-To: <cover.1289789604.git.joe@perches.com>

Signed-off-by: Joe Perches <joe@perches.com>
---
 net/ipv6/mcast.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c
index d1444b9..9c50745 100644
--- a/net/ipv6/mcast.c
+++ b/net/ipv6/mcast.c
@@ -257,7 +257,7 @@ static struct inet6_dev *ip6_mc_find_dev_rcu(struct net *net,
 		return NULL;
 	idev = __in6_dev_get(dev);
 	if (!idev)
-		return NULL;;
+		return NULL;
 	read_lock_bh(&idev->lock);
 	if (idev->dead) {
 		read_unlock_bh(&idev->lock);
-- 
1.7.3.1.g432b3.dirty


^ permalink raw reply related

* Re: [PATCH] r8169: fix checksum broken
From: Shan Wei @ 2010-11-15  3:31 UTC (permalink / raw)
  To: David Miller; +Cc: Francois Romieu, netdev@vger.kernel.org, jgarzik
In-Reply-To: <20101112231325.GB6676@electric-eye.fr.zoreil.com>

Francois Romieu wrote, at 11/13/2010 07:13 AM:
> Francois Romieu <romieu@fr.zoreil.com> :
> [...]
>> Which kind of device do you use : PCI-E 8168 / 810x or PCI 8169 ?
> 
> Wrong page. Forget it.
> 
> Acked-by: Francois Romieu <romieu@fr.zoreil.com>

While grepping IPFail variable, maybe cp_rx_csum_ok() in 8139cp driver also has same bug.
There is no NIC on hand using RealTek RTL-8139C+ series 10/100 PCI Ethernet driver, 
So don't confirm it.

===
[PATCH] 8139cp: fix checksum broken

I am not family with RealTek RTL-8139C+ series 10/100 PCI Ethernet driver. 
I try to guess the meaning of RxProtoIP and IPFail. 
RxProtoIP stands for received IPv4 packet that upper protocol is not tcp and udp. 
!(status & IPFail) is true means that driver correctly to check checksum in IPv4 header.

If these are right, driver will set ip_summed with CHECKSUM_UNNECESSARY for other
upper protocol, e.g. sctp, igmp protocol. This will cause protocol stack ignores 
checksum check for packets with invalid checksum. 

This patch is only compile-test.


Signed-off-by: Shan Wei <shanwei@cn.fujitsu.com>
---
 drivers/net/8139cp.c |   10 ++++------
 1 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/drivers/net/8139cp.c b/drivers/net/8139cp.c
index ac422cd..dd16e83 100644
--- a/drivers/net/8139cp.c
+++ b/drivers/net/8139cp.c
@@ -490,13 +490,11 @@ static inline unsigned int cp_rx_csum_ok (u32 status)
 {
 	unsigned int protocol = (status >> 16) & 0x3;
 
-	if (likely((protocol == RxProtoTCP) && (!(status & TCPFail))))
+	if (((protocol == RxProtoTCP) && !(status & TCPFail)) ||
+	    ((protocol == RxProtoUDP) && !(status & UDPFail)))
 		return 1;
-	else if ((protocol == RxProtoUDP) && (!(status & UDPFail)))
-		return 1;
-	else if ((protocol == RxProtoIP) && (!(status & IPFail)))
-		return 1;
-	return 0;
+	else
+		return 0;
 }
 
 static int cp_rx_poll(struct napi_struct *napi, int budget)
-- 
1.6.3.3

^ permalink raw reply related

* Re: [BUG]: skge not working (as module) in 2.6.37-rc1
From: Marin Mitov @ 2010-11-15  3:55 UTC (permalink / raw)
  To: maciej.rutecki
  Cc: Stephen Hemminger, Stephen Hemminger, netdev, linux-kernel,
	David S. Miller
In-Reply-To: <201011142045.14627.maciej.rutecki@gmail.com>

On Sunday, November 14, 2010 09:45:14 pm Maciej Rutecki wrote:
> On niedziela, 7 listopada 2010 o 22:45:52 Marin Mitov wrote:
> > Hi Stephen,
> > 
> > skge as in 2.6.36 (and before) is working.
> > As in 2.6.37-rc1 it is not:
> > 
> 
> I created a Bugzilla entry at 
> https://bugzilla.kernel.org/show_bug.cgi?id=22892
> for your bug report, please add your address to the CC list in there, thanks!
> 

Hi Maciej,

It is already corrected, as in 2.6.37-rc1-git11.

Thanks.

Marin Mitov

^ permalink raw reply

* Remaining problems in firewire-net
From: Maxim Levitsky @ 2010-11-15  4:30 UTC (permalink / raw)
  To: Stefan Richter; +Cc: netdev, linux1394-devel, linux-kernel
In-Reply-To: <tkrat.036c5d10fb83f85d@s5r6.in-berlin.de>


I have unexpected progress on remaining issues in firewire-net in regard
to loss of connection after s2ram cycle, and annoying fact that after
cable replug (intentional of course), it takes time for connection to
reestablish. These are separate issues, and I know the exact cause of
both (and as a side effect I now know exactly how what iso transcations
are and how do they work.)


Problem #1: large delay after cable removal/insert cycle.
The reason is that IP over 1394 abuses ARP packets so that they carry
additional vital information describing the node (namely the bus address
that is used for block address, or as they call it the fifo address).
ARP packets also carry less vital pieces of information namely maximum
transfer size (max_rec) and maximum supported speed of the sender node.

The problem here is that bus reset makes these pieces of information
invalid, and more that that the target node and its fw_peer information
disappear, and reappear but without the above fields set.

The network core is of course unaware of such ugly abuse, and thus it
doesn't send an ARP packet to the destanation. In fact it won't even
send it if destanation node is explicitly addressed. because it appears
in the ARP cache.

The solution here is somehow tell the network core to invalidate the ARP
entry for the target node as soon as it disappears.
Don't yet know how to do that.

Actually to demonstrate this problem its enough to execute 'arpping' and
it will instantly make connection work.

And lastly of course eventually connection establishes because kernel
sends ARP requests periodicity to validate the destination network node.


Problem #2:

As was described in problem #1, its obvious that after suspend to ram,
to reestablish connection we need an ARP reply.
The problem is that it is received via iso channel, and it isn't
reinitialized after s2ram.

A quick and dirty hack  to stop/start the ISO channel from fwnet_update
in firewire-net 'fixes' that problem.

A better solution seemed to make the firewire-ohci reinit all ISO
channels after s2ram cycle. But this is actually wrong.

That is because 1394 spec specifies that first of all the ISO channel
must be allocated from the IRM node. The firewire stack currently just
uses hardcoded numbers in two places the ISO is used 
(firewire-net, and firedtv)
However it has all functions implemented for this.

Secondary that allocation must be redone on each bus reset.
Even more that that, since 1394 spec doesn't define a way to address a
channel to a specific client, that must be done in protocol specific
way.

This means that on each bus reset all drivers that use ISO channels must
allocate them again, and inform underlying hardware they serve.

Therefore the first solution is actually the correct one.

In case of firewire-net, it is simpler, because it uses the broadcast
channel, so it only has to find who is the IRM and read its
BROADCAST_CHANNEL.

However, I think I need to write a function to query the IRM its
broadcast channel, don't think it has one.


Speaking of IRM discovery, the spec says it should be a node with
contender bit and largest node id. However, the code in core-topology.c,
build_tree seems to take the node that sent the selfID packet last.

Best regards,
	Maxim Levitsky


------------------------------------------------------------------------------
Centralized Desktop Delivery: Dell and VMware Reference Architecture
Simplifying enterprise desktop deployment and management using
Dell EqualLogic storage and VMware View: A highly scalable, end-to-end
client virtualization framework. Read more!
http://p.sf.net/sfu/dell-eql-dev2dev

^ permalink raw reply

* [PATCH] netfilter: place in source hash after SNAT is done
From: Changli Gao @ 2010-11-15  4:48 UTC (permalink / raw)
  To: Patrick McHardy; +Cc: David S. Miller, netfilter-devel, netdev, Changli Gao

If SNAT isn't done, the wrong info maybe got by the other cts.

As the filter table is after DNAT table, the packets dropped in filter
table also bother bysource hash table.

Signed-off-by: Changli Gao <xiaosuo@gmail.com>
---
 net/ipv4/netfilter/nf_nat_core.c |   18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/net/ipv4/netfilter/nf_nat_core.c b/net/ipv4/netfilter/nf_nat_core.c
index c04787c..51ce55a 100644
--- a/net/ipv4/netfilter/nf_nat_core.c
+++ b/net/ipv4/netfilter/nf_nat_core.c
@@ -221,7 +221,14 @@ get_unique_tuple(struct nf_conntrack_tuple *tuple,
 	   manips not an issue.  */
 	if (maniptype == IP_NAT_MANIP_SRC &&
 	    !(range->flags & IP_NAT_RANGE_PROTO_RANDOM)) {
-		if (find_appropriate_src(net, zone, orig_tuple, tuple, range)) {
+		/* try the original tuple first */
+		if (in_range(orig_tuple, range)) {
+			if (!nf_nat_used_tuple(orig_tuple, ct)) {
+				*tuple = *orig_tuple;
+				return;
+			}
+		} else if (find_appropriate_src(net, zone, orig_tuple, tuple,
+			   range)) {
 			pr_debug("get_unique_tuple: Found current src map\n");
 			if (!nf_nat_used_tuple(tuple, ct))
 				return;
@@ -266,7 +273,6 @@ nf_nat_setup_info(struct nf_conn *ct,
 	struct net *net = nf_ct_net(ct);
 	struct nf_conntrack_tuple curr_tuple, new_tuple;
 	struct nf_conn_nat *nat;
-	int have_to_hash = !(ct->status & IPS_NAT_DONE_MASK);
 
 	/* nat helper or nfctnetlink also setup binding */
 	nat = nfct_nat(ct);
@@ -306,8 +312,7 @@ nf_nat_setup_info(struct nf_conn *ct,
 			ct->status |= IPS_DST_NAT;
 	}
 
-	/* Place in source hash if this is the first time. */
-	if (have_to_hash) {
+	if (maniptype == IP_NAT_MANIP_SRC) {
 		unsigned int srchash;
 
 		srchash = hash_by_src(net, nf_ct_zone(ct),
@@ -532,7 +537,7 @@ static void nf_nat_cleanup_conntrack(struct nf_conn *ct)
 	if (nat == NULL || nat->ct == NULL)
 		return;
 
-	NF_CT_ASSERT(nat->ct->status & IPS_NAT_DONE_MASK);
+	NF_CT_ASSERT(nat->ct->status & IPS_SRC_NAT_DONE);
 
 	spin_lock_bh(&nf_nat_lock);
 	hlist_del_rcu(&nat->bysource);
@@ -545,11 +550,10 @@ static void nf_nat_move_storage(void *new, void *old)
 	struct nf_conn_nat *old_nat = old;
 	struct nf_conn *ct = old_nat->ct;
 
-	if (!ct || !(ct->status & IPS_NAT_DONE_MASK))
+	if (!ct || !(ct->status & IPS_SRC_NAT_DONE))
 		return;
 
 	spin_lock_bh(&nf_nat_lock);
-	new_nat->ct = ct;
 	hlist_replace_rcu(&old_nat->bysource, &new_nat->bysource);
 	spin_unlock_bh(&nf_nat_lock);
 }

^ permalink raw reply related


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox