diff options
author | David S. Miller <davem@davemloft.net> | 2014-05-30 20:35:32 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-05-30 20:35:32 -0400 |
commit | e9bcbc970a774bc8e17fd7eb24b9969be67d666e (patch) | |
tree | af8d8ad62a6b81cc570cdfed83496872e670e909 | |
parent | 078252e0e877b50fcd42d3bd0d112f1f7c8518e8 (diff) | |
parent | a68be015aece7b9f33f1523048e445b72ca7111d (diff) |
Merge branch 's390-next'
Frank Blaschka says:
====================
s390: network patches for net-next V1
here are some s390 related patches for net-next
Added some style fixing reported by David Laight.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/s390/net/ctcm_sysfs.c | 14 | ||||
-rw-r--r-- | drivers/s390/net/lcs.c | 13 | ||||
-rw-r--r-- | drivers/s390/net/qeth_core_main.c | 4 | ||||
-rw-r--r-- | drivers/s390/net/qeth_l3_main.c | 2 | ||||
-rw-r--r-- | net/iucv/af_iucv.c | 32 |
5 files changed, 40 insertions, 25 deletions
diff --git a/drivers/s390/net/ctcm_sysfs.c b/drivers/s390/net/ctcm_sysfs.c index 985b5dcbdac8..6bcfbbb20f04 100644 --- a/drivers/s390/net/ctcm_sysfs.c +++ b/drivers/s390/net/ctcm_sysfs.c | |||
@@ -34,8 +34,9 @@ static ssize_t ctcm_buffer_write(struct device *dev, | |||
34 | struct device_attribute *attr, const char *buf, size_t count) | 34 | struct device_attribute *attr, const char *buf, size_t count) |
35 | { | 35 | { |
36 | struct net_device *ndev; | 36 | struct net_device *ndev; |
37 | int bs1; | 37 | unsigned int bs1; |
38 | struct ctcm_priv *priv = dev_get_drvdata(dev); | 38 | struct ctcm_priv *priv = dev_get_drvdata(dev); |
39 | int rc; | ||
39 | 40 | ||
40 | ndev = priv->channel[CTCM_READ]->netdev; | 41 | ndev = priv->channel[CTCM_READ]->netdev; |
41 | if (!(priv && priv->channel[CTCM_READ] && ndev)) { | 42 | if (!(priv && priv->channel[CTCM_READ] && ndev)) { |
@@ -43,7 +44,9 @@ static ssize_t ctcm_buffer_write(struct device *dev, | |||
43 | return -ENODEV; | 44 | return -ENODEV; |
44 | } | 45 | } |
45 | 46 | ||
46 | sscanf(buf, "%u", &bs1); | 47 | rc = sscanf(buf, "%u", &bs1); |
48 | if (rc != 1) | ||
49 | goto einval; | ||
47 | if (bs1 > CTCM_BUFSIZE_LIMIT) | 50 | if (bs1 > CTCM_BUFSIZE_LIMIT) |
48 | goto einval; | 51 | goto einval; |
49 | if (bs1 < (576 + LL_HEADER_LENGTH + 2)) | 52 | if (bs1 < (576 + LL_HEADER_LENGTH + 2)) |
@@ -143,13 +146,14 @@ static ssize_t ctcm_proto_show(struct device *dev, | |||
143 | static ssize_t ctcm_proto_store(struct device *dev, | 146 | static ssize_t ctcm_proto_store(struct device *dev, |
144 | struct device_attribute *attr, const char *buf, size_t count) | 147 | struct device_attribute *attr, const char *buf, size_t count) |
145 | { | 148 | { |
146 | int value; | 149 | int value, rc; |
147 | struct ctcm_priv *priv = dev_get_drvdata(dev); | 150 | struct ctcm_priv *priv = dev_get_drvdata(dev); |
148 | 151 | ||
149 | if (!priv) | 152 | if (!priv) |
150 | return -ENODEV; | 153 | return -ENODEV; |
151 | sscanf(buf, "%u", &value); | 154 | rc = sscanf(buf, "%d", &value); |
152 | if (!((value == CTCM_PROTO_S390) || | 155 | if ((rc != 1) || |
156 | !((value == CTCM_PROTO_S390) || | ||
153 | (value == CTCM_PROTO_LINUX) || | 157 | (value == CTCM_PROTO_LINUX) || |
154 | (value == CTCM_PROTO_MPC) || | 158 | (value == CTCM_PROTO_MPC) || |
155 | (value == CTCM_PROTO_OS390))) | 159 | (value == CTCM_PROTO_OS390))) |
diff --git a/drivers/s390/net/lcs.c b/drivers/s390/net/lcs.c index 8d5d96969c39..0a7d87c372b8 100644 --- a/drivers/s390/net/lcs.c +++ b/drivers/s390/net/lcs.c | |||
@@ -1943,14 +1943,16 @@ static ssize_t | |||
1943 | lcs_portno_store (struct device *dev, struct device_attribute *attr, const char *buf, size_t count) | 1943 | lcs_portno_store (struct device *dev, struct device_attribute *attr, const char *buf, size_t count) |
1944 | { | 1944 | { |
1945 | struct lcs_card *card; | 1945 | struct lcs_card *card; |
1946 | int value; | 1946 | int value, rc; |
1947 | 1947 | ||
1948 | card = dev_get_drvdata(dev); | 1948 | card = dev_get_drvdata(dev); |
1949 | 1949 | ||
1950 | if (!card) | 1950 | if (!card) |
1951 | return 0; | 1951 | return 0; |
1952 | 1952 | ||
1953 | sscanf(buf, "%u", &value); | 1953 | rc = sscanf(buf, "%d", &value); |
1954 | if (rc != 1) | ||
1955 | return -EINVAL; | ||
1954 | /* TODO: sanity checks */ | 1956 | /* TODO: sanity checks */ |
1955 | card->portno = value; | 1957 | card->portno = value; |
1956 | 1958 | ||
@@ -1997,14 +1999,17 @@ static ssize_t | |||
1997 | lcs_timeout_store (struct device *dev, struct device_attribute *attr, const char *buf, size_t count) | 1999 | lcs_timeout_store (struct device *dev, struct device_attribute *attr, const char *buf, size_t count) |
1998 | { | 2000 | { |
1999 | struct lcs_card *card; | 2001 | struct lcs_card *card; |
2000 | int value; | 2002 | unsigned int value; |
2003 | int rc; | ||
2001 | 2004 | ||
2002 | card = dev_get_drvdata(dev); | 2005 | card = dev_get_drvdata(dev); |
2003 | 2006 | ||
2004 | if (!card) | 2007 | if (!card) |
2005 | return 0; | 2008 | return 0; |
2006 | 2009 | ||
2007 | sscanf(buf, "%u", &value); | 2010 | rc = sscanf(buf, "%u", &value); |
2011 | if (rc != 1) | ||
2012 | return -EINVAL; | ||
2008 | /* TODO: sanity checks */ | 2013 | /* TODO: sanity checks */ |
2009 | card->lancmd_timeout = value; | 2014 | card->lancmd_timeout = value; |
2010 | 2015 | ||
diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c index 34993009a9e1..549e9fd5bfdc 100644 --- a/drivers/s390/net/qeth_core_main.c +++ b/drivers/s390/net/qeth_core_main.c | |||
@@ -1013,7 +1013,7 @@ static long __qeth_check_irb_error(struct ccw_device *cdev, | |||
1013 | 1013 | ||
1014 | card = CARD_FROM_CDEV(cdev); | 1014 | card = CARD_FROM_CDEV(cdev); |
1015 | 1015 | ||
1016 | if (!IS_ERR(irb)) | 1016 | if (!card || !IS_ERR(irb)) |
1017 | return 0; | 1017 | return 0; |
1018 | 1018 | ||
1019 | switch (PTR_ERR(irb)) { | 1019 | switch (PTR_ERR(irb)) { |
@@ -1029,7 +1029,7 @@ static long __qeth_check_irb_error(struct ccw_device *cdev, | |||
1029 | QETH_CARD_TEXT(card, 2, "ckirberr"); | 1029 | QETH_CARD_TEXT(card, 2, "ckirberr"); |
1030 | QETH_CARD_TEXT_(card, 2, " rc%d", -ETIMEDOUT); | 1030 | QETH_CARD_TEXT_(card, 2, " rc%d", -ETIMEDOUT); |
1031 | if (intparm == QETH_RCD_PARM) { | 1031 | if (intparm == QETH_RCD_PARM) { |
1032 | if (card && (card->data.ccwdev == cdev)) { | 1032 | if (card->data.ccwdev == cdev) { |
1033 | card->data.state = CH_STATE_DOWN; | 1033 | card->data.state = CH_STATE_DOWN; |
1034 | wake_up(&card->wait_q); | 1034 | wake_up(&card->wait_q); |
1035 | } | 1035 | } |
diff --git a/drivers/s390/net/qeth_l3_main.c b/drivers/s390/net/qeth_l3_main.c index c58f82af3658..14e0b5810e8c 100644 --- a/drivers/s390/net/qeth_l3_main.c +++ b/drivers/s390/net/qeth_l3_main.c | |||
@@ -63,7 +63,7 @@ void qeth_l3_ipaddr4_to_string(const __u8 *addr, char *buf) | |||
63 | int qeth_l3_string_to_ipaddr4(const char *buf, __u8 *addr) | 63 | int qeth_l3_string_to_ipaddr4(const char *buf, __u8 *addr) |
64 | { | 64 | { |
65 | int count = 0, rc = 0; | 65 | int count = 0, rc = 0; |
66 | int in[4]; | 66 | unsigned int in[4]; |
67 | char c; | 67 | char c; |
68 | 68 | ||
69 | rc = sscanf(buf, "%u.%u.%u.%u%c", | 69 | rc = sscanf(buf, "%u.%u.%u.%u%c", |
diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c index 8c9d7302c846..7a95fa4a3de1 100644 --- a/net/iucv/af_iucv.c +++ b/net/iucv/af_iucv.c | |||
@@ -682,6 +682,18 @@ struct sock *iucv_accept_dequeue(struct sock *parent, struct socket *newsock) | |||
682 | return NULL; | 682 | return NULL; |
683 | } | 683 | } |
684 | 684 | ||
685 | static void __iucv_auto_name(struct iucv_sock *iucv) | ||
686 | { | ||
687 | char name[12]; | ||
688 | |||
689 | sprintf(name, "%08x", atomic_inc_return(&iucv_sk_list.autobind_name)); | ||
690 | while (__iucv_get_sock_by_name(name)) { | ||
691 | sprintf(name, "%08x", | ||
692 | atomic_inc_return(&iucv_sk_list.autobind_name)); | ||
693 | } | ||
694 | memcpy(iucv->src_name, name, 8); | ||
695 | } | ||
696 | |||
685 | /* Bind an unbound socket */ | 697 | /* Bind an unbound socket */ |
686 | static int iucv_sock_bind(struct socket *sock, struct sockaddr *addr, | 698 | static int iucv_sock_bind(struct socket *sock, struct sockaddr *addr, |
687 | int addr_len) | 699 | int addr_len) |
@@ -724,8 +736,12 @@ static int iucv_sock_bind(struct socket *sock, struct sockaddr *addr, | |||
724 | rcu_read_lock(); | 736 | rcu_read_lock(); |
725 | for_each_netdev_rcu(&init_net, dev) { | 737 | for_each_netdev_rcu(&init_net, dev) { |
726 | if (!memcmp(dev->perm_addr, uid, 8)) { | 738 | if (!memcmp(dev->perm_addr, uid, 8)) { |
727 | memcpy(iucv->src_name, sa->siucv_name, 8); | ||
728 | memcpy(iucv->src_user_id, sa->siucv_user_id, 8); | 739 | memcpy(iucv->src_user_id, sa->siucv_user_id, 8); |
740 | /* Check for unitialized siucv_name */ | ||
741 | if (strncmp(sa->siucv_name, " ", 8) == 0) | ||
742 | __iucv_auto_name(iucv); | ||
743 | else | ||
744 | memcpy(iucv->src_name, sa->siucv_name, 8); | ||
729 | sk->sk_bound_dev_if = dev->ifindex; | 745 | sk->sk_bound_dev_if = dev->ifindex; |
730 | iucv->hs_dev = dev; | 746 | iucv->hs_dev = dev; |
731 | dev_hold(dev); | 747 | dev_hold(dev); |
@@ -763,7 +779,6 @@ done: | |||
763 | static int iucv_sock_autobind(struct sock *sk) | 779 | static int iucv_sock_autobind(struct sock *sk) |
764 | { | 780 | { |
765 | struct iucv_sock *iucv = iucv_sk(sk); | 781 | struct iucv_sock *iucv = iucv_sk(sk); |
766 | char name[12]; | ||
767 | int err = 0; | 782 | int err = 0; |
768 | 783 | ||
769 | if (unlikely(!pr_iucv)) | 784 | if (unlikely(!pr_iucv)) |
@@ -772,17 +787,9 @@ static int iucv_sock_autobind(struct sock *sk) | |||
772 | memcpy(iucv->src_user_id, iucv_userid, 8); | 787 | memcpy(iucv->src_user_id, iucv_userid, 8); |
773 | 788 | ||
774 | write_lock_bh(&iucv_sk_list.lock); | 789 | write_lock_bh(&iucv_sk_list.lock); |
775 | 790 | __iucv_auto_name(iucv); | |
776 | sprintf(name, "%08x", atomic_inc_return(&iucv_sk_list.autobind_name)); | ||
777 | while (__iucv_get_sock_by_name(name)) { | ||
778 | sprintf(name, "%08x", | ||
779 | atomic_inc_return(&iucv_sk_list.autobind_name)); | ||
780 | } | ||
781 | |||
782 | write_unlock_bh(&iucv_sk_list.lock); | 791 | write_unlock_bh(&iucv_sk_list.lock); |
783 | 792 | ||
784 | memcpy(&iucv->src_name, name, 8); | ||
785 | |||
786 | if (!iucv->msglimit) | 793 | if (!iucv->msglimit) |
787 | iucv->msglimit = IUCV_QUEUELEN_DEFAULT; | 794 | iucv->msglimit = IUCV_QUEUELEN_DEFAULT; |
788 | 795 | ||
@@ -1936,11 +1943,10 @@ static int afiucv_hs_callback_syn(struct sock *sk, struct sk_buff *skb) | |||
1936 | sk_acceptq_is_full(sk) || | 1943 | sk_acceptq_is_full(sk) || |
1937 | !nsk) { | 1944 | !nsk) { |
1938 | /* error on server socket - connection refused */ | 1945 | /* error on server socket - connection refused */ |
1939 | if (nsk) | ||
1940 | sk_free(nsk); | ||
1941 | afiucv_swap_src_dest(skb); | 1946 | afiucv_swap_src_dest(skb); |
1942 | trans_hdr->flags = AF_IUCV_FLAG_SYN | AF_IUCV_FLAG_FIN; | 1947 | trans_hdr->flags = AF_IUCV_FLAG_SYN | AF_IUCV_FLAG_FIN; |
1943 | err = dev_queue_xmit(skb); | 1948 | err = dev_queue_xmit(skb); |
1949 | iucv_sock_kill(nsk); | ||
1944 | bh_unlock_sock(sk); | 1950 | bh_unlock_sock(sk); |
1945 | goto out; | 1951 | goto out; |
1946 | } | 1952 | } |