diff options
| author | David S. Miller <davem@davemloft.net> | 2015-04-06 21:52:19 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2015-04-06 22:34:15 -0400 |
| commit | c85d6975ef923cffdd56de3e0e6aba0977282cff (patch) | |
| tree | cb497deea01827951809c9c7c0f1c22780c146be /net/ipv4 | |
| parent | 60302ff631f0f3eac0ec592e128b776f0676b397 (diff) | |
| parent | f22e6e847115abc3a0e2ad7bb18d243d42275af1 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts:
drivers/net/ethernet/mellanox/mlx4/cmd.c
net/core/fib_rules.c
net/ipv4/fib_frontend.c
The fib_rules.c and fib_frontend.c conflicts were locking adjustments
in 'net' overlapping addition and removal of code in 'net-next'.
The mlx4 conflict was a bug fix in 'net' happening in the same
place a constant was being replaced with a more suitable macro.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4')
| -rw-r--r-- | net/ipv4/fib_frontend.c | 2 | ||||
| -rw-r--r-- | net/ipv4/ipmr.c | 5 | ||||
| -rw-r--r-- | net/ipv4/tcp_input.c | 7 |
3 files changed, 9 insertions, 5 deletions
diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c index 2166d2bf1562..872494e6e6eb 100644 --- a/net/ipv4/fib_frontend.c +++ b/net/ipv4/fib_frontend.c | |||
| @@ -1175,13 +1175,11 @@ static void ip_fib_net_exit(struct net *net) | |||
| 1175 | unsigned int i; | 1175 | unsigned int i; |
| 1176 | 1176 | ||
| 1177 | rtnl_lock(); | 1177 | rtnl_lock(); |
| 1178 | |||
| 1179 | #ifdef CONFIG_IP_MULTIPLE_TABLES | 1178 | #ifdef CONFIG_IP_MULTIPLE_TABLES |
| 1180 | RCU_INIT_POINTER(net->ipv4.fib_local, NULL); | 1179 | RCU_INIT_POINTER(net->ipv4.fib_local, NULL); |
| 1181 | RCU_INIT_POINTER(net->ipv4.fib_main, NULL); | 1180 | RCU_INIT_POINTER(net->ipv4.fib_main, NULL); |
| 1182 | RCU_INIT_POINTER(net->ipv4.fib_default, NULL); | 1181 | RCU_INIT_POINTER(net->ipv4.fib_default, NULL); |
| 1183 | #endif | 1182 | #endif |
| 1184 | |||
| 1185 | for (i = 0; i < FIB_TABLE_HASHSZ; i++) { | 1183 | for (i = 0; i < FIB_TABLE_HASHSZ; i++) { |
| 1186 | struct hlist_head *head = &net->ipv4.fib_table_hash[i]; | 1184 | struct hlist_head *head = &net->ipv4.fib_table_hash[i]; |
| 1187 | struct hlist_node *tmp; | 1185 | struct hlist_node *tmp; |
diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c index c204b728bbc1..5f17d0e78071 100644 --- a/net/ipv4/ipmr.c +++ b/net/ipv4/ipmr.c | |||
| @@ -276,11 +276,13 @@ static void __net_exit ipmr_rules_exit(struct net *net) | |||
| 276 | { | 276 | { |
| 277 | struct mr_table *mrt, *next; | 277 | struct mr_table *mrt, *next; |
| 278 | 278 | ||
| 279 | rtnl_lock(); | ||
| 279 | list_for_each_entry_safe(mrt, next, &net->ipv4.mr_tables, list) { | 280 | list_for_each_entry_safe(mrt, next, &net->ipv4.mr_tables, list) { |
| 280 | list_del(&mrt->list); | 281 | list_del(&mrt->list); |
| 281 | ipmr_free_table(mrt); | 282 | ipmr_free_table(mrt); |
| 282 | } | 283 | } |
| 283 | fib_rules_unregister(net->ipv4.mr_rules_ops); | 284 | fib_rules_unregister(net->ipv4.mr_rules_ops); |
| 285 | rtnl_unlock(); | ||
| 284 | } | 286 | } |
| 285 | #else | 287 | #else |
| 286 | #define ipmr_for_each_table(mrt, net) \ | 288 | #define ipmr_for_each_table(mrt, net) \ |
| @@ -306,7 +308,10 @@ static int __net_init ipmr_rules_init(struct net *net) | |||
| 306 | 308 | ||
| 307 | static void __net_exit ipmr_rules_exit(struct net *net) | 309 | static void __net_exit ipmr_rules_exit(struct net *net) |
| 308 | { | 310 | { |
| 311 | rtnl_lock(); | ||
| 309 | ipmr_free_table(net->ipv4.mrt); | 312 | ipmr_free_table(net->ipv4.mrt); |
| 313 | net->ipv4.mrt = NULL; | ||
| 314 | rtnl_unlock(); | ||
| 310 | } | 315 | } |
| 311 | #endif | 316 | #endif |
| 312 | 317 | ||
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index df7e7fa12733..c1ce304ba8d2 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
| @@ -3105,10 +3105,11 @@ static int tcp_clean_rtx_queue(struct sock *sk, int prior_fackets, | |||
| 3105 | if (!first_ackt.v64) | 3105 | if (!first_ackt.v64) |
| 3106 | first_ackt = last_ackt; | 3106 | first_ackt = last_ackt; |
| 3107 | 3107 | ||
| 3108 | if (!(sacked & TCPCB_SACKED_ACKED)) | 3108 | if (!(sacked & TCPCB_SACKED_ACKED)) { |
| 3109 | reord = min(pkts_acked, reord); | 3109 | reord = min(pkts_acked, reord); |
| 3110 | if (!after(scb->end_seq, tp->high_seq)) | 3110 | if (!after(scb->end_seq, tp->high_seq)) |
| 3111 | flag |= FLAG_ORIG_SACK_ACKED; | 3111 | flag |= FLAG_ORIG_SACK_ACKED; |
| 3112 | } | ||
| 3112 | } | 3113 | } |
| 3113 | 3114 | ||
| 3114 | if (sacked & TCPCB_SACKED_ACKED) | 3115 | if (sacked & TCPCB_SACKED_ACKED) |
