diff options
Diffstat (limited to 'net')
| -rw-r--r-- | net/atm/pppoatm.c | 2 | ||||
| -rw-r--r-- | net/bluetooth/hci_event.c | 4 | ||||
| -rw-r--r-- | net/core/dev.c | 8 | ||||
| -rw-r--r-- | net/core/link_watch.c | 2 | ||||
| -rw-r--r-- | net/ipv4/inetpeer.c | 2 | ||||
| -rw-r--r-- | net/ipv4/tcp_output.c | 4 | ||||
| -rw-r--r-- | net/netfilter/nf_conntrack_core.c | 2 | ||||
| -rw-r--r-- | net/rds/ib_recv.c | 4 | ||||
| -rw-r--r-- | net/rds/iw_recv.c | 4 | ||||
| -rw-r--r-- | net/rds/send.c | 6 | ||||
| -rw-r--r-- | net/rds/tcp_send.c | 2 | ||||
| -rw-r--r-- | net/sunrpc/auth.c | 2 | ||||
| -rw-r--r-- | net/sunrpc/auth_gss/auth_gss.c | 2 | ||||
| -rw-r--r-- | net/sunrpc/backchannel_rqst.c | 4 | ||||
| -rw-r--r-- | net/sunrpc/xprt.c | 4 | ||||
| -rw-r--r-- | net/sunrpc/xprtsock.c | 16 | ||||
| -rw-r--r-- | net/unix/af_unix.c | 2 |
17 files changed, 34 insertions, 36 deletions
diff --git a/net/atm/pppoatm.c b/net/atm/pppoatm.c index 8c93267ce969..c4e09846d1de 100644 --- a/net/atm/pppoatm.c +++ b/net/atm/pppoatm.c | |||
| @@ -252,7 +252,7 @@ static int pppoatm_may_send(struct pppoatm_vcc *pvcc, int size) | |||
| 252 | * we need to ensure there's a memory barrier after it. The bit | 252 | * we need to ensure there's a memory barrier after it. The bit |
| 253 | * *must* be set before we do the atomic_inc() on pvcc->inflight. | 253 | * *must* be set before we do the atomic_inc() on pvcc->inflight. |
| 254 | * There's no smp_mb__after_set_bit(), so it's this or abuse | 254 | * There's no smp_mb__after_set_bit(), so it's this or abuse |
| 255 | * smp_mb__after_clear_bit(). | 255 | * smp_mb__after_atomic(). |
| 256 | */ | 256 | */ |
| 257 | test_and_set_bit(BLOCKED, &pvcc->blocked); | 257 | test_and_set_bit(BLOCKED, &pvcc->blocked); |
| 258 | 258 | ||
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c index 15010a230b6d..682f33a38366 100644 --- a/net/bluetooth/hci_event.c +++ b/net/bluetooth/hci_event.c | |||
| @@ -45,7 +45,7 @@ static void hci_cc_inquiry_cancel(struct hci_dev *hdev, struct sk_buff *skb) | |||
| 45 | return; | 45 | return; |
| 46 | 46 | ||
| 47 | clear_bit(HCI_INQUIRY, &hdev->flags); | 47 | clear_bit(HCI_INQUIRY, &hdev->flags); |
| 48 | smp_mb__after_clear_bit(); /* wake_up_bit advises about this barrier */ | 48 | smp_mb__after_atomic(); /* wake_up_bit advises about this barrier */ |
| 49 | wake_up_bit(&hdev->flags, HCI_INQUIRY); | 49 | wake_up_bit(&hdev->flags, HCI_INQUIRY); |
| 50 | 50 | ||
| 51 | hci_conn_check_pending(hdev); | 51 | hci_conn_check_pending(hdev); |
| @@ -1768,7 +1768,7 @@ static void hci_inquiry_complete_evt(struct hci_dev *hdev, struct sk_buff *skb) | |||
| 1768 | if (!test_and_clear_bit(HCI_INQUIRY, &hdev->flags)) | 1768 | if (!test_and_clear_bit(HCI_INQUIRY, &hdev->flags)) |
| 1769 | return; | 1769 | return; |
| 1770 | 1770 | ||
| 1771 | smp_mb__after_clear_bit(); /* wake_up_bit advises about this barrier */ | 1771 | smp_mb__after_atomic(); /* wake_up_bit advises about this barrier */ |
| 1772 | wake_up_bit(&hdev->flags, HCI_INQUIRY); | 1772 | wake_up_bit(&hdev->flags, HCI_INQUIRY); |
| 1773 | 1773 | ||
| 1774 | if (!test_bit(HCI_MGMT, &hdev->dev_flags)) | 1774 | if (!test_bit(HCI_MGMT, &hdev->dev_flags)) |
diff --git a/net/core/dev.c b/net/core/dev.c index fb8b0546485b..8908a68db449 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
| @@ -1326,7 +1326,7 @@ static int __dev_close_many(struct list_head *head) | |||
| 1326 | * dev->stop() will invoke napi_disable() on all of it's | 1326 | * dev->stop() will invoke napi_disable() on all of it's |
| 1327 | * napi_struct instances on this device. | 1327 | * napi_struct instances on this device. |
| 1328 | */ | 1328 | */ |
| 1329 | smp_mb__after_clear_bit(); /* Commit netif_running(). */ | 1329 | smp_mb__after_atomic(); /* Commit netif_running(). */ |
| 1330 | } | 1330 | } |
| 1331 | 1331 | ||
| 1332 | dev_deactivate_many(head); | 1332 | dev_deactivate_many(head); |
| @@ -3356,7 +3356,7 @@ static void net_tx_action(struct softirq_action *h) | |||
| 3356 | 3356 | ||
| 3357 | root_lock = qdisc_lock(q); | 3357 | root_lock = qdisc_lock(q); |
| 3358 | if (spin_trylock(root_lock)) { | 3358 | if (spin_trylock(root_lock)) { |
| 3359 | smp_mb__before_clear_bit(); | 3359 | smp_mb__before_atomic(); |
| 3360 | clear_bit(__QDISC_STATE_SCHED, | 3360 | clear_bit(__QDISC_STATE_SCHED, |
| 3361 | &q->state); | 3361 | &q->state); |
| 3362 | qdisc_run(q); | 3362 | qdisc_run(q); |
| @@ -3366,7 +3366,7 @@ static void net_tx_action(struct softirq_action *h) | |||
| 3366 | &q->state)) { | 3366 | &q->state)) { |
| 3367 | __netif_reschedule(q); | 3367 | __netif_reschedule(q); |
| 3368 | } else { | 3368 | } else { |
| 3369 | smp_mb__before_clear_bit(); | 3369 | smp_mb__before_atomic(); |
| 3370 | clear_bit(__QDISC_STATE_SCHED, | 3370 | clear_bit(__QDISC_STATE_SCHED, |
| 3371 | &q->state); | 3371 | &q->state); |
| 3372 | } | 3372 | } |
| @@ -4258,7 +4258,7 @@ void __napi_complete(struct napi_struct *n) | |||
| 4258 | BUG_ON(n->gro_list); | 4258 | BUG_ON(n->gro_list); |
| 4259 | 4259 | ||
| 4260 | list_del(&n->poll_list); | 4260 | list_del(&n->poll_list); |
| 4261 | smp_mb__before_clear_bit(); | 4261 | smp_mb__before_atomic(); |
| 4262 | clear_bit(NAPI_STATE_SCHED, &n->state); | 4262 | clear_bit(NAPI_STATE_SCHED, &n->state); |
| 4263 | } | 4263 | } |
| 4264 | EXPORT_SYMBOL(__napi_complete); | 4264 | EXPORT_SYMBOL(__napi_complete); |
diff --git a/net/core/link_watch.c b/net/core/link_watch.c index 9c3a839322ba..bd0767e6b2b3 100644 --- a/net/core/link_watch.c +++ b/net/core/link_watch.c | |||
| @@ -147,7 +147,7 @@ static void linkwatch_do_dev(struct net_device *dev) | |||
| 147 | * Make sure the above read is complete since it can be | 147 | * Make sure the above read is complete since it can be |
| 148 | * rewritten as soon as we clear the bit below. | 148 | * rewritten as soon as we clear the bit below. |
| 149 | */ | 149 | */ |
| 150 | smp_mb__before_clear_bit(); | 150 | smp_mb__before_atomic(); |
| 151 | 151 | ||
| 152 | /* We are about to handle this device, | 152 | /* We are about to handle this device, |
| 153 | * so new events can be accepted | 153 | * so new events can be accepted |
diff --git a/net/ipv4/inetpeer.c b/net/ipv4/inetpeer.c index 48f424465112..56cd458a1b8c 100644 --- a/net/ipv4/inetpeer.c +++ b/net/ipv4/inetpeer.c | |||
| @@ -522,7 +522,7 @@ EXPORT_SYMBOL_GPL(inet_getpeer); | |||
| 522 | void inet_putpeer(struct inet_peer *p) | 522 | void inet_putpeer(struct inet_peer *p) |
| 523 | { | 523 | { |
| 524 | p->dtime = (__u32)jiffies; | 524 | p->dtime = (__u32)jiffies; |
| 525 | smp_mb__before_atomic_dec(); | 525 | smp_mb__before_atomic(); |
| 526 | atomic_dec(&p->refcnt); | 526 | atomic_dec(&p->refcnt); |
| 527 | } | 527 | } |
| 528 | EXPORT_SYMBOL_GPL(inet_putpeer); | 528 | EXPORT_SYMBOL_GPL(inet_putpeer); |
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index 12d6016bdd9a..2d340bd2cd3d 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c | |||
| @@ -1930,10 +1930,8 @@ static bool tcp_write_xmit(struct sock *sk, unsigned int mss_now, int nonagle, | |||
| 1930 | /* It is possible TX completion already happened | 1930 | /* It is possible TX completion already happened |
| 1931 | * before we set TSQ_THROTTLED, so we must | 1931 | * before we set TSQ_THROTTLED, so we must |
| 1932 | * test again the condition. | 1932 | * test again the condition. |
| 1933 | * We abuse smp_mb__after_clear_bit() because | ||
| 1934 | * there is no smp_mb__after_set_bit() yet | ||
| 1935 | */ | 1933 | */ |
| 1936 | smp_mb__after_clear_bit(); | 1934 | smp_mb__after_atomic(); |
| 1937 | if (atomic_read(&sk->sk_wmem_alloc) > limit) | 1935 | if (atomic_read(&sk->sk_wmem_alloc) > limit) |
| 1938 | break; | 1936 | break; |
| 1939 | } | 1937 | } |
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c index 75421f2ba8be..1f4f954c4b47 100644 --- a/net/netfilter/nf_conntrack_core.c +++ b/net/netfilter/nf_conntrack_core.c | |||
| @@ -914,7 +914,7 @@ void nf_conntrack_free(struct nf_conn *ct) | |||
| 914 | nf_ct_ext_destroy(ct); | 914 | nf_ct_ext_destroy(ct); |
| 915 | nf_ct_ext_free(ct); | 915 | nf_ct_ext_free(ct); |
| 916 | kmem_cache_free(net->ct.nf_conntrack_cachep, ct); | 916 | kmem_cache_free(net->ct.nf_conntrack_cachep, ct); |
| 917 | smp_mb__before_atomic_dec(); | 917 | smp_mb__before_atomic(); |
| 918 | atomic_dec(&net->ct.count); | 918 | atomic_dec(&net->ct.count); |
| 919 | } | 919 | } |
| 920 | EXPORT_SYMBOL_GPL(nf_conntrack_free); | 920 | EXPORT_SYMBOL_GPL(nf_conntrack_free); |
diff --git a/net/rds/ib_recv.c b/net/rds/ib_recv.c index b7ebe23cdedf..d67de453c35a 100644 --- a/net/rds/ib_recv.c +++ b/net/rds/ib_recv.c | |||
| @@ -598,7 +598,7 @@ static void rds_ib_set_ack(struct rds_ib_connection *ic, u64 seq, | |||
| 598 | { | 598 | { |
| 599 | atomic64_set(&ic->i_ack_next, seq); | 599 | atomic64_set(&ic->i_ack_next, seq); |
| 600 | if (ack_required) { | 600 | if (ack_required) { |
| 601 | smp_mb__before_clear_bit(); | 601 | smp_mb__before_atomic(); |
| 602 | set_bit(IB_ACK_REQUESTED, &ic->i_ack_flags); | 602 | set_bit(IB_ACK_REQUESTED, &ic->i_ack_flags); |
| 603 | } | 603 | } |
| 604 | } | 604 | } |
| @@ -606,7 +606,7 @@ static void rds_ib_set_ack(struct rds_ib_connection *ic, u64 seq, | |||
| 606 | static u64 rds_ib_get_ack(struct rds_ib_connection *ic) | 606 | static u64 rds_ib_get_ack(struct rds_ib_connection *ic) |
| 607 | { | 607 | { |
| 608 | clear_bit(IB_ACK_REQUESTED, &ic->i_ack_flags); | 608 | clear_bit(IB_ACK_REQUESTED, &ic->i_ack_flags); |
| 609 | smp_mb__after_clear_bit(); | 609 | smp_mb__after_atomic(); |
| 610 | 610 | ||
| 611 | return atomic64_read(&ic->i_ack_next); | 611 | return atomic64_read(&ic->i_ack_next); |
| 612 | } | 612 | } |
diff --git a/net/rds/iw_recv.c b/net/rds/iw_recv.c index 45033358358e..aa8bf6786008 100644 --- a/net/rds/iw_recv.c +++ b/net/rds/iw_recv.c | |||
| @@ -429,7 +429,7 @@ static void rds_iw_set_ack(struct rds_iw_connection *ic, u64 seq, | |||
| 429 | { | 429 | { |
| 430 | atomic64_set(&ic->i_ack_next, seq); | 430 | atomic64_set(&ic->i_ack_next, seq); |
| 431 | if (ack_required) { | 431 | if (ack_required) { |
| 432 | smp_mb__before_clear_bit(); | 432 | smp_mb__before_atomic(); |
| 433 | set_bit(IB_ACK_REQUESTED, &ic->i_ack_flags); | 433 | set_bit(IB_ACK_REQUESTED, &ic->i_ack_flags); |
| 434 | } | 434 | } |
| 435 | } | 435 | } |
| @@ -437,7 +437,7 @@ static void rds_iw_set_ack(struct rds_iw_connection *ic, u64 seq, | |||
| 437 | static u64 rds_iw_get_ack(struct rds_iw_connection *ic) | 437 | static u64 rds_iw_get_ack(struct rds_iw_connection *ic) |
| 438 | { | 438 | { |
| 439 | clear_bit(IB_ACK_REQUESTED, &ic->i_ack_flags); | 439 | clear_bit(IB_ACK_REQUESTED, &ic->i_ack_flags); |
| 440 | smp_mb__after_clear_bit(); | 440 | smp_mb__after_atomic(); |
| 441 | 441 | ||
| 442 | return atomic64_read(&ic->i_ack_next); | 442 | return atomic64_read(&ic->i_ack_next); |
| 443 | } | 443 | } |
diff --git a/net/rds/send.c b/net/rds/send.c index a82fb660ec00..23718160d71e 100644 --- a/net/rds/send.c +++ b/net/rds/send.c | |||
| @@ -107,7 +107,7 @@ static int acquire_in_xmit(struct rds_connection *conn) | |||
| 107 | static void release_in_xmit(struct rds_connection *conn) | 107 | static void release_in_xmit(struct rds_connection *conn) |
| 108 | { | 108 | { |
| 109 | clear_bit(RDS_IN_XMIT, &conn->c_flags); | 109 | clear_bit(RDS_IN_XMIT, &conn->c_flags); |
| 110 | smp_mb__after_clear_bit(); | 110 | smp_mb__after_atomic(); |
| 111 | /* | 111 | /* |
| 112 | * We don't use wait_on_bit()/wake_up_bit() because our waking is in a | 112 | * We don't use wait_on_bit()/wake_up_bit() because our waking is in a |
| 113 | * hot path and finding waiters is very rare. We don't want to walk | 113 | * hot path and finding waiters is very rare. We don't want to walk |
| @@ -661,7 +661,7 @@ void rds_send_drop_acked(struct rds_connection *conn, u64 ack, | |||
| 661 | 661 | ||
| 662 | /* order flag updates with spin locks */ | 662 | /* order flag updates with spin locks */ |
| 663 | if (!list_empty(&list)) | 663 | if (!list_empty(&list)) |
| 664 | smp_mb__after_clear_bit(); | 664 | smp_mb__after_atomic(); |
| 665 | 665 | ||
| 666 | spin_unlock_irqrestore(&conn->c_lock, flags); | 666 | spin_unlock_irqrestore(&conn->c_lock, flags); |
| 667 | 667 | ||
| @@ -691,7 +691,7 @@ void rds_send_drop_to(struct rds_sock *rs, struct sockaddr_in *dest) | |||
| 691 | } | 691 | } |
| 692 | 692 | ||
| 693 | /* order flag updates with the rs lock */ | 693 | /* order flag updates with the rs lock */ |
| 694 | smp_mb__after_clear_bit(); | 694 | smp_mb__after_atomic(); |
| 695 | 695 | ||
| 696 | spin_unlock_irqrestore(&rs->rs_lock, flags); | 696 | spin_unlock_irqrestore(&rs->rs_lock, flags); |
| 697 | 697 | ||
diff --git a/net/rds/tcp_send.c b/net/rds/tcp_send.c index 81cf5a4c5e40..53b17ca0dff5 100644 --- a/net/rds/tcp_send.c +++ b/net/rds/tcp_send.c | |||
| @@ -93,7 +93,7 @@ int rds_tcp_xmit(struct rds_connection *conn, struct rds_message *rm, | |||
| 93 | rm->m_ack_seq = tc->t_last_sent_nxt + | 93 | rm->m_ack_seq = tc->t_last_sent_nxt + |
| 94 | sizeof(struct rds_header) + | 94 | sizeof(struct rds_header) + |
| 95 | be32_to_cpu(rm->m_inc.i_hdr.h_len) - 1; | 95 | be32_to_cpu(rm->m_inc.i_hdr.h_len) - 1; |
| 96 | smp_mb__before_clear_bit(); | 96 | smp_mb__before_atomic(); |
| 97 | set_bit(RDS_MSG_HAS_ACK_SEQ, &rm->m_flags); | 97 | set_bit(RDS_MSG_HAS_ACK_SEQ, &rm->m_flags); |
| 98 | tc->t_last_expected_una = rm->m_ack_seq + 1; | 98 | tc->t_last_expected_una = rm->m_ack_seq + 1; |
| 99 | 99 | ||
diff --git a/net/sunrpc/auth.c b/net/sunrpc/auth.c index 5285ead196c0..247e973544bf 100644 --- a/net/sunrpc/auth.c +++ b/net/sunrpc/auth.c | |||
| @@ -296,7 +296,7 @@ static void | |||
| 296 | rpcauth_unhash_cred_locked(struct rpc_cred *cred) | 296 | rpcauth_unhash_cred_locked(struct rpc_cred *cred) |
| 297 | { | 297 | { |
| 298 | hlist_del_rcu(&cred->cr_hash); | 298 | hlist_del_rcu(&cred->cr_hash); |
| 299 | smp_mb__before_clear_bit(); | 299 | smp_mb__before_atomic(); |
| 300 | clear_bit(RPCAUTH_CRED_HASHED, &cred->cr_flags); | 300 | clear_bit(RPCAUTH_CRED_HASHED, &cred->cr_flags); |
| 301 | } | 301 | } |
| 302 | 302 | ||
diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c index 36e431ee1c90..b6e440baccc3 100644 --- a/net/sunrpc/auth_gss/auth_gss.c +++ b/net/sunrpc/auth_gss/auth_gss.c | |||
| @@ -143,7 +143,7 @@ gss_cred_set_ctx(struct rpc_cred *cred, struct gss_cl_ctx *ctx) | |||
| 143 | gss_get_ctx(ctx); | 143 | gss_get_ctx(ctx); |
| 144 | rcu_assign_pointer(gss_cred->gc_ctx, ctx); | 144 | rcu_assign_pointer(gss_cred->gc_ctx, ctx); |
| 145 | set_bit(RPCAUTH_CRED_UPTODATE, &cred->cr_flags); | 145 | set_bit(RPCAUTH_CRED_UPTODATE, &cred->cr_flags); |
| 146 | smp_mb__before_clear_bit(); | 146 | smp_mb__before_atomic(); |
| 147 | clear_bit(RPCAUTH_CRED_NEW, &cred->cr_flags); | 147 | clear_bit(RPCAUTH_CRED_NEW, &cred->cr_flags); |
| 148 | } | 148 | } |
| 149 | 149 | ||
diff --git a/net/sunrpc/backchannel_rqst.c b/net/sunrpc/backchannel_rqst.c index 3513d559bc45..9761a0da964d 100644 --- a/net/sunrpc/backchannel_rqst.c +++ b/net/sunrpc/backchannel_rqst.c | |||
| @@ -244,10 +244,10 @@ void xprt_free_bc_request(struct rpc_rqst *req) | |||
| 244 | dprintk("RPC: free backchannel req=%p\n", req); | 244 | dprintk("RPC: free backchannel req=%p\n", req); |
| 245 | 245 | ||
| 246 | req->rq_connect_cookie = xprt->connect_cookie - 1; | 246 | req->rq_connect_cookie = xprt->connect_cookie - 1; |
| 247 | smp_mb__before_clear_bit(); | 247 | smp_mb__before_atomic(); |
| 248 | WARN_ON_ONCE(!test_bit(RPC_BC_PA_IN_USE, &req->rq_bc_pa_state)); | 248 | WARN_ON_ONCE(!test_bit(RPC_BC_PA_IN_USE, &req->rq_bc_pa_state)); |
| 249 | clear_bit(RPC_BC_PA_IN_USE, &req->rq_bc_pa_state); | 249 | clear_bit(RPC_BC_PA_IN_USE, &req->rq_bc_pa_state); |
| 250 | smp_mb__after_clear_bit(); | 250 | smp_mb__after_atomic(); |
| 251 | 251 | ||
| 252 | if (!xprt_need_to_requeue(xprt)) { | 252 | if (!xprt_need_to_requeue(xprt)) { |
| 253 | /* | 253 | /* |
diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c index d173f79947c6..89d051de6b3e 100644 --- a/net/sunrpc/xprt.c +++ b/net/sunrpc/xprt.c | |||
| @@ -230,9 +230,9 @@ static void xprt_clear_locked(struct rpc_xprt *xprt) | |||
| 230 | { | 230 | { |
| 231 | xprt->snd_task = NULL; | 231 | xprt->snd_task = NULL; |
| 232 | if (!test_bit(XPRT_CLOSE_WAIT, &xprt->state)) { | 232 | if (!test_bit(XPRT_CLOSE_WAIT, &xprt->state)) { |
| 233 | smp_mb__before_clear_bit(); | 233 | smp_mb__before_atomic(); |
| 234 | clear_bit(XPRT_LOCKED, &xprt->state); | 234 | clear_bit(XPRT_LOCKED, &xprt->state); |
| 235 | smp_mb__after_clear_bit(); | 235 | smp_mb__after_atomic(); |
| 236 | } else | 236 | } else |
| 237 | queue_work(rpciod_workqueue, &xprt->task_cleanup); | 237 | queue_work(rpciod_workqueue, &xprt->task_cleanup); |
| 238 | } | 238 | } |
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index 25a3dcf15cae..402a7e9a16b7 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c | |||
| @@ -893,11 +893,11 @@ static void xs_close(struct rpc_xprt *xprt) | |||
| 893 | xs_reset_transport(transport); | 893 | xs_reset_transport(transport); |
| 894 | xprt->reestablish_timeout = 0; | 894 | xprt->reestablish_timeout = 0; |
| 895 | 895 | ||
| 896 | smp_mb__before_clear_bit(); | 896 | smp_mb__before_atomic(); |
| 897 | clear_bit(XPRT_CONNECTION_ABORT, &xprt->state); | 897 | clear_bit(XPRT_CONNECTION_ABORT, &xprt->state); |
| 898 | clear_bit(XPRT_CLOSE_WAIT, &xprt->state); | 898 | clear_bit(XPRT_CLOSE_WAIT, &xprt->state); |
| 899 | clear_bit(XPRT_CLOSING, &xprt->state); | 899 | clear_bit(XPRT_CLOSING, &xprt->state); |
| 900 | smp_mb__after_clear_bit(); | 900 | smp_mb__after_atomic(); |
| 901 | xprt_disconnect_done(xprt); | 901 | xprt_disconnect_done(xprt); |
| 902 | } | 902 | } |
| 903 | 903 | ||
| @@ -1497,12 +1497,12 @@ static void xs_tcp_cancel_linger_timeout(struct rpc_xprt *xprt) | |||
| 1497 | 1497 | ||
| 1498 | static void xs_sock_reset_connection_flags(struct rpc_xprt *xprt) | 1498 | static void xs_sock_reset_connection_flags(struct rpc_xprt *xprt) |
| 1499 | { | 1499 | { |
| 1500 | smp_mb__before_clear_bit(); | 1500 | smp_mb__before_atomic(); |
| 1501 | clear_bit(XPRT_CONNECTION_ABORT, &xprt->state); | 1501 | clear_bit(XPRT_CONNECTION_ABORT, &xprt->state); |
| 1502 | clear_bit(XPRT_CONNECTION_CLOSE, &xprt->state); | 1502 | clear_bit(XPRT_CONNECTION_CLOSE, &xprt->state); |
| 1503 | clear_bit(XPRT_CLOSE_WAIT, &xprt->state); | 1503 | clear_bit(XPRT_CLOSE_WAIT, &xprt->state); |
| 1504 | clear_bit(XPRT_CLOSING, &xprt->state); | 1504 | clear_bit(XPRT_CLOSING, &xprt->state); |
| 1505 | smp_mb__after_clear_bit(); | 1505 | smp_mb__after_atomic(); |
| 1506 | } | 1506 | } |
| 1507 | 1507 | ||
| 1508 | static void xs_sock_mark_closed(struct rpc_xprt *xprt) | 1508 | static void xs_sock_mark_closed(struct rpc_xprt *xprt) |
| @@ -1556,10 +1556,10 @@ static void xs_tcp_state_change(struct sock *sk) | |||
| 1556 | xprt->connect_cookie++; | 1556 | xprt->connect_cookie++; |
| 1557 | xprt->reestablish_timeout = 0; | 1557 | xprt->reestablish_timeout = 0; |
| 1558 | set_bit(XPRT_CLOSING, &xprt->state); | 1558 | set_bit(XPRT_CLOSING, &xprt->state); |
| 1559 | smp_mb__before_clear_bit(); | 1559 | smp_mb__before_atomic(); |
| 1560 | clear_bit(XPRT_CONNECTED, &xprt->state); | 1560 | clear_bit(XPRT_CONNECTED, &xprt->state); |
| 1561 | clear_bit(XPRT_CLOSE_WAIT, &xprt->state); | 1561 | clear_bit(XPRT_CLOSE_WAIT, &xprt->state); |
| 1562 | smp_mb__after_clear_bit(); | 1562 | smp_mb__after_atomic(); |
| 1563 | xs_tcp_schedule_linger_timeout(xprt, xs_tcp_fin_timeout); | 1563 | xs_tcp_schedule_linger_timeout(xprt, xs_tcp_fin_timeout); |
| 1564 | break; | 1564 | break; |
| 1565 | case TCP_CLOSE_WAIT: | 1565 | case TCP_CLOSE_WAIT: |
| @@ -1578,9 +1578,9 @@ static void xs_tcp_state_change(struct sock *sk) | |||
| 1578 | case TCP_LAST_ACK: | 1578 | case TCP_LAST_ACK: |
| 1579 | set_bit(XPRT_CLOSING, &xprt->state); | 1579 | set_bit(XPRT_CLOSING, &xprt->state); |
| 1580 | xs_tcp_schedule_linger_timeout(xprt, xs_tcp_fin_timeout); | 1580 | xs_tcp_schedule_linger_timeout(xprt, xs_tcp_fin_timeout); |
| 1581 | smp_mb__before_clear_bit(); | 1581 | smp_mb__before_atomic(); |
| 1582 | clear_bit(XPRT_CONNECTED, &xprt->state); | 1582 | clear_bit(XPRT_CONNECTED, &xprt->state); |
| 1583 | smp_mb__after_clear_bit(); | 1583 | smp_mb__after_atomic(); |
| 1584 | break; | 1584 | break; |
| 1585 | case TCP_CLOSE: | 1585 | case TCP_CLOSE: |
| 1586 | xs_tcp_cancel_linger_timeout(xprt); | 1586 | xs_tcp_cancel_linger_timeout(xprt); |
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index bb7e8ba821f4..749f80c21e22 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c | |||
| @@ -1207,7 +1207,7 @@ restart: | |||
| 1207 | sk->sk_state = TCP_ESTABLISHED; | 1207 | sk->sk_state = TCP_ESTABLISHED; |
| 1208 | sock_hold(newsk); | 1208 | sock_hold(newsk); |
| 1209 | 1209 | ||
| 1210 | smp_mb__after_atomic_inc(); /* sock_hold() does an atomic_inc() */ | 1210 | smp_mb__after_atomic(); /* sock_hold() does an atomic_inc() */ |
| 1211 | unix_peer(sk) = newsk; | 1211 | unix_peer(sk) = newsk; |
| 1212 | 1212 | ||
| 1213 | unix_state_unlock(sk); | 1213 | unix_state_unlock(sk); |
