Browse Source

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lowpan/lowpan

David S. Miller 15 years ago
parent
commit
12cbcfd386
3 changed files with 6 additions and 2 deletions
  1. 1 1
      net/ieee802154/dgram.c
  2. 4 0
      net/ieee802154/netlink.c
  3. 1 1
      net/ieee802154/raw.c

+ 1 - 1
net/ieee802154/dgram.c

@@ -414,7 +414,7 @@ static int dgram_getsockopt(struct sock *sk, int level, int optname,
 }
 }
 
 
 static int dgram_setsockopt(struct sock *sk, int level, int optname,
 static int dgram_setsockopt(struct sock *sk, int level, int optname,
-		    char __user *optval, int __user optlen)
+		    char __user *optval, int optlen)
 {
 {
 	struct dgram_sock *ro = dgram_sk(sk);
 	struct dgram_sock *ro = dgram_sk(sk);
 	int val;
 	int val;

+ 4 - 0
net/ieee802154/netlink.c

@@ -35,6 +35,7 @@
 #include <net/ieee802154_netdev.h>
 #include <net/ieee802154_netdev.h>
 
 
 static unsigned int ieee802154_seq_num;
 static unsigned int ieee802154_seq_num;
+static DEFINE_SPINLOCK(ieee802154_seq_lock);
 
 
 static struct genl_family ieee802154_coordinator_family = {
 static struct genl_family ieee802154_coordinator_family = {
 	.id		= GENL_ID_GENERATE,
 	.id		= GENL_ID_GENERATE,
@@ -57,12 +58,15 @@ static struct sk_buff *ieee802154_nl_create(int flags, u8 req)
 {
 {
 	void *hdr;
 	void *hdr;
 	struct sk_buff *msg = nlmsg_new(NLMSG_GOODSIZE, GFP_ATOMIC);
 	struct sk_buff *msg = nlmsg_new(NLMSG_GOODSIZE, GFP_ATOMIC);
+	unsigned long f;
 
 
 	if (!msg)
 	if (!msg)
 		return NULL;
 		return NULL;
 
 
+	spin_lock_irqsave(&ieee802154_seq_lock, f);
 	hdr = genlmsg_put(msg, 0, ieee802154_seq_num++,
 	hdr = genlmsg_put(msg, 0, ieee802154_seq_num++,
 			&ieee802154_coordinator_family, flags, req);
 			&ieee802154_coordinator_family, flags, req);
+	spin_unlock_irqrestore(&ieee802154_seq_lock, f);
 	if (!hdr) {
 	if (!hdr) {
 		nlmsg_free(msg);
 		nlmsg_free(msg);
 		return NULL;
 		return NULL;

+ 1 - 1
net/ieee802154/raw.c

@@ -244,7 +244,7 @@ static int raw_getsockopt(struct sock *sk, int level, int optname,
 }
 }
 
 
 static int raw_setsockopt(struct sock *sk, int level, int optname,
 static int raw_setsockopt(struct sock *sk, int level, int optname,
-		    char __user *optval, int __user optlen)
+		    char __user *optval, int optlen)
 {
 {
 	return -EOPNOTSUPP;
 	return -EOPNOTSUPP;
 }
 }