diff options
| author | Olof Johansson <olof@lixom.net> | 2013-12-28 18:38:32 -0500 |
|---|---|---|
| committer | Olof Johansson <olof@lixom.net> | 2013-12-28 18:38:32 -0500 |
| commit | 9b17c16525552b247cb2d9bb8eeadc87950b36ff (patch) | |
| tree | 449426f2b37bb340e286fe0def9bf9cef29ec2a7 /net | |
| parent | 4cff6123536236fa84f826d9b93452903b90fe2e (diff) | |
| parent | 82f4fe707836e80b0fcaae9a4a1756e6e89c5e62 (diff) | |
Merge tag 'omap-for-v3.13/intc-ldp-fix' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into fixes
From Tony Lindgren:
Fix a regression for wrong interrupt numbers for some devices after
the sparse IRQ conversion, fix DRA7 console output for earlyprintk,
and fix the LDP LCD backlight when DSS is built into the kernel and
not as a loadable module.
* tag 'omap-for-v3.13/intc-ldp-fix' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
ARM: OMAP2+: Fix LCD panel backlight regression for LDP legacy booting
ARM: OMAP2+: hwmod_data: fix missing OMAP_INTC_START in irq data
ARM: DRA7: hwmod: Fix boot crash with DEBUG_LL
+ v3.13-rc5
Signed-off-by: Olof Johansson <olof@lixom.net>
Diffstat (limited to 'net')
| -rw-r--r-- | net/core/neighbour.c | 1 | ||||
| -rw-r--r-- | net/ipv4/netfilter/ipt_SYNPROXY.c | 1 | ||||
| -rw-r--r-- | net/ipv4/netfilter/nft_reject_ipv4.c | 2 | ||||
| -rw-r--r-- | net/ipv4/udp.c | 13 | ||||
| -rw-r--r-- | net/ipv6/netfilter/ip6t_SYNPROXY.c | 1 | ||||
| -rw-r--r-- | net/sctp/probe.c | 17 | ||||
| -rw-r--r-- | net/unix/af_unix.c | 8 |
7 files changed, 30 insertions, 13 deletions
diff --git a/net/core/neighbour.c b/net/core/neighbour.c index ca15f32821fb..36b1443f9ae4 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c | |||
| @@ -1161,6 +1161,7 @@ int neigh_update(struct neighbour *neigh, const u8 *lladdr, u8 new, | |||
| 1161 | neigh->parms->reachable_time : | 1161 | neigh->parms->reachable_time : |
| 1162 | 0))); | 1162 | 0))); |
| 1163 | neigh->nud_state = new; | 1163 | neigh->nud_state = new; |
| 1164 | notify = 1; | ||
| 1164 | } | 1165 | } |
| 1165 | 1166 | ||
| 1166 | if (lladdr != neigh->ha) { | 1167 | if (lladdr != neigh->ha) { |
diff --git a/net/ipv4/netfilter/ipt_SYNPROXY.c b/net/ipv4/netfilter/ipt_SYNPROXY.c index f13bd91d9a56..a313c3fbeb46 100644 --- a/net/ipv4/netfilter/ipt_SYNPROXY.c +++ b/net/ipv4/netfilter/ipt_SYNPROXY.c | |||
| @@ -423,6 +423,7 @@ static void synproxy_tg4_destroy(const struct xt_tgdtor_param *par) | |||
| 423 | static struct xt_target synproxy_tg4_reg __read_mostly = { | 423 | static struct xt_target synproxy_tg4_reg __read_mostly = { |
| 424 | .name = "SYNPROXY", | 424 | .name = "SYNPROXY", |
| 425 | .family = NFPROTO_IPV4, | 425 | .family = NFPROTO_IPV4, |
| 426 | .hooks = (1 << NF_INET_LOCAL_IN) | (1 << NF_INET_FORWARD), | ||
| 426 | .target = synproxy_tg4, | 427 | .target = synproxy_tg4, |
| 427 | .targetsize = sizeof(struct xt_synproxy_info), | 428 | .targetsize = sizeof(struct xt_synproxy_info), |
| 428 | .checkentry = synproxy_tg4_check, | 429 | .checkentry = synproxy_tg4_check, |
diff --git a/net/ipv4/netfilter/nft_reject_ipv4.c b/net/ipv4/netfilter/nft_reject_ipv4.c index fff5ba1a33b7..4a5e94ac314a 100644 --- a/net/ipv4/netfilter/nft_reject_ipv4.c +++ b/net/ipv4/netfilter/nft_reject_ipv4.c | |||
| @@ -72,7 +72,7 @@ static int nft_reject_dump(struct sk_buff *skb, const struct nft_expr *expr) | |||
| 72 | { | 72 | { |
| 73 | const struct nft_reject *priv = nft_expr_priv(expr); | 73 | const struct nft_reject *priv = nft_expr_priv(expr); |
| 74 | 74 | ||
| 75 | if (nla_put_be32(skb, NFTA_REJECT_TYPE, priv->type)) | 75 | if (nla_put_be32(skb, NFTA_REJECT_TYPE, htonl(priv->type))) |
| 76 | goto nla_put_failure; | 76 | goto nla_put_failure; |
| 77 | 77 | ||
| 78 | switch (priv->type) { | 78 | switch (priv->type) { |
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index 62c19fdd102d..f140048334ce 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c | |||
| @@ -1600,20 +1600,15 @@ static void flush_stack(struct sock **stack, unsigned int count, | |||
| 1600 | } | 1600 | } |
| 1601 | 1601 | ||
| 1602 | /* For TCP sockets, sk_rx_dst is protected by socket lock | 1602 | /* For TCP sockets, sk_rx_dst is protected by socket lock |
| 1603 | * For UDP, we use sk_dst_lock to guard against concurrent changes. | 1603 | * For UDP, we use xchg() to guard against concurrent changes. |
| 1604 | */ | 1604 | */ |
| 1605 | static void udp_sk_rx_dst_set(struct sock *sk, struct dst_entry *dst) | 1605 | static void udp_sk_rx_dst_set(struct sock *sk, struct dst_entry *dst) |
| 1606 | { | 1606 | { |
| 1607 | struct dst_entry *old; | 1607 | struct dst_entry *old; |
| 1608 | 1608 | ||
| 1609 | spin_lock(&sk->sk_dst_lock); | 1609 | dst_hold(dst); |
| 1610 | old = sk->sk_rx_dst; | 1610 | old = xchg(&sk->sk_rx_dst, dst); |
| 1611 | if (likely(old != dst)) { | 1611 | dst_release(old); |
| 1612 | dst_hold(dst); | ||
| 1613 | sk->sk_rx_dst = dst; | ||
| 1614 | dst_release(old); | ||
| 1615 | } | ||
| 1616 | spin_unlock(&sk->sk_dst_lock); | ||
| 1617 | } | 1612 | } |
| 1618 | 1613 | ||
| 1619 | /* | 1614 | /* |
diff --git a/net/ipv6/netfilter/ip6t_SYNPROXY.c b/net/ipv6/netfilter/ip6t_SYNPROXY.c index f78f41aca8e9..a0d17270117c 100644 --- a/net/ipv6/netfilter/ip6t_SYNPROXY.c +++ b/net/ipv6/netfilter/ip6t_SYNPROXY.c | |||
| @@ -446,6 +446,7 @@ static void synproxy_tg6_destroy(const struct xt_tgdtor_param *par) | |||
| 446 | static struct xt_target synproxy_tg6_reg __read_mostly = { | 446 | static struct xt_target synproxy_tg6_reg __read_mostly = { |
| 447 | .name = "SYNPROXY", | 447 | .name = "SYNPROXY", |
| 448 | .family = NFPROTO_IPV6, | 448 | .family = NFPROTO_IPV6, |
| 449 | .hooks = (1 << NF_INET_LOCAL_IN) | (1 << NF_INET_FORWARD), | ||
| 449 | .target = synproxy_tg6, | 450 | .target = synproxy_tg6, |
| 450 | .targetsize = sizeof(struct xt_synproxy_info), | 451 | .targetsize = sizeof(struct xt_synproxy_info), |
| 451 | .checkentry = synproxy_tg6_check, | 452 | .checkentry = synproxy_tg6_check, |
diff --git a/net/sctp/probe.c b/net/sctp/probe.c index 53c452efb40b..5e68b94ee640 100644 --- a/net/sctp/probe.c +++ b/net/sctp/probe.c | |||
| @@ -38,6 +38,7 @@ | |||
| 38 | #include <net/sctp/sctp.h> | 38 | #include <net/sctp/sctp.h> |
| 39 | #include <net/sctp/sm.h> | 39 | #include <net/sctp/sm.h> |
| 40 | 40 | ||
| 41 | MODULE_SOFTDEP("pre: sctp"); | ||
| 41 | MODULE_AUTHOR("Wei Yongjun <yjwei@cn.fujitsu.com>"); | 42 | MODULE_AUTHOR("Wei Yongjun <yjwei@cn.fujitsu.com>"); |
| 42 | MODULE_DESCRIPTION("SCTP snooper"); | 43 | MODULE_DESCRIPTION("SCTP snooper"); |
| 43 | MODULE_LICENSE("GPL"); | 44 | MODULE_LICENSE("GPL"); |
| @@ -182,6 +183,20 @@ static struct jprobe sctp_recv_probe = { | |||
| 182 | .entry = jsctp_sf_eat_sack, | 183 | .entry = jsctp_sf_eat_sack, |
| 183 | }; | 184 | }; |
| 184 | 185 | ||
| 186 | static __init int sctp_setup_jprobe(void) | ||
| 187 | { | ||
| 188 | int ret = register_jprobe(&sctp_recv_probe); | ||
| 189 | |||
| 190 | if (ret) { | ||
| 191 | if (request_module("sctp")) | ||
| 192 | goto out; | ||
| 193 | ret = register_jprobe(&sctp_recv_probe); | ||
| 194 | } | ||
| 195 | |||
| 196 | out: | ||
| 197 | return ret; | ||
| 198 | } | ||
| 199 | |||
| 185 | static __init int sctpprobe_init(void) | 200 | static __init int sctpprobe_init(void) |
| 186 | { | 201 | { |
| 187 | int ret = -ENOMEM; | 202 | int ret = -ENOMEM; |
| @@ -202,7 +217,7 @@ static __init int sctpprobe_init(void) | |||
| 202 | &sctpprobe_fops)) | 217 | &sctpprobe_fops)) |
| 203 | goto free_kfifo; | 218 | goto free_kfifo; |
| 204 | 219 | ||
| 205 | ret = register_jprobe(&sctp_recv_probe); | 220 | ret = sctp_setup_jprobe(); |
| 206 | if (ret) | 221 | if (ret) |
| 207 | goto remove_proc; | 222 | goto remove_proc; |
| 208 | 223 | ||
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index a0ca162e5bd5..a427623ee574 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c | |||
| @@ -718,7 +718,9 @@ static int unix_autobind(struct socket *sock) | |||
| 718 | int err; | 718 | int err; |
| 719 | unsigned int retries = 0; | 719 | unsigned int retries = 0; |
| 720 | 720 | ||
| 721 | mutex_lock(&u->readlock); | 721 | err = mutex_lock_interruptible(&u->readlock); |
| 722 | if (err) | ||
| 723 | return err; | ||
| 722 | 724 | ||
| 723 | err = 0; | 725 | err = 0; |
| 724 | if (u->addr) | 726 | if (u->addr) |
| @@ -877,7 +879,9 @@ static int unix_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) | |||
| 877 | goto out; | 879 | goto out; |
| 878 | addr_len = err; | 880 | addr_len = err; |
| 879 | 881 | ||
| 880 | mutex_lock(&u->readlock); | 882 | err = mutex_lock_interruptible(&u->readlock); |
| 883 | if (err) | ||
| 884 | goto out; | ||
| 881 | 885 | ||
| 882 | err = -EINVAL; | 886 | err = -EINVAL; |
| 883 | if (u->addr) | 887 | if (u->addr) |
