diff options
Diffstat (limited to 'net/dccp')
| -rw-r--r-- | net/dccp/ccid.c | 1 | ||||
| -rw-r--r-- | net/dccp/ccids/ccid2.c | 2 | ||||
| -rw-r--r-- | net/dccp/feat.c | 14 |
3 files changed, 12 insertions, 5 deletions
diff --git a/net/dccp/ccid.c b/net/dccp/ccid.c index ccbf72c793b6..c45088b5e6fb 100644 --- a/net/dccp/ccid.c +++ b/net/dccp/ccid.c | |||
| @@ -40,6 +40,7 @@ static inline void ccids_write_unlock(void) | |||
| 40 | static inline void ccids_read_lock(void) | 40 | static inline void ccids_read_lock(void) |
| 41 | { | 41 | { |
| 42 | atomic_inc(&ccids_lockct); | 42 | atomic_inc(&ccids_lockct); |
| 43 | smp_mb__after_atomic_inc(); | ||
| 43 | spin_unlock_wait(&ccids_lock); | 44 | spin_unlock_wait(&ccids_lock); |
| 44 | } | 45 | } |
| 45 | 46 | ||
diff --git a/net/dccp/ccids/ccid2.c b/net/dccp/ccids/ccid2.c index 248d20f4c7c4..d29b88fe723c 100644 --- a/net/dccp/ccids/ccid2.c +++ b/net/dccp/ccids/ccid2.c | |||
| @@ -298,7 +298,7 @@ static void ccid2_hc_tx_packet_sent(struct sock *sk, int more, unsigned int len) | |||
| 298 | int rc; | 298 | int rc; |
| 299 | 299 | ||
| 300 | ccid2_pr_debug("allocating more space in history\n"); | 300 | ccid2_pr_debug("allocating more space in history\n"); |
| 301 | rc = ccid2_hc_tx_alloc_seq(hctx, CCID2_SEQBUF_LEN, GFP_KERNEL); | 301 | rc = ccid2_hc_tx_alloc_seq(hctx, CCID2_SEQBUF_LEN, gfp_any()); |
| 302 | BUG_ON(rc); /* XXX what do we do? */ | 302 | BUG_ON(rc); /* XXX what do we do? */ |
| 303 | 303 | ||
| 304 | next = hctx->ccid2hctx_seqh->ccid2s_next; | 304 | next = hctx->ccid2hctx_seqh->ccid2s_next; |
diff --git a/net/dccp/feat.c b/net/dccp/feat.c index cd845df5320d..5ebdd86c1b99 100644 --- a/net/dccp/feat.c +++ b/net/dccp/feat.c | |||
| @@ -327,10 +327,16 @@ static void dccp_feat_empty_confirm(struct dccp_minisock *dmsk, | |||
| 327 | } | 327 | } |
| 328 | 328 | ||
| 329 | switch (type) { | 329 | switch (type) { |
| 330 | case DCCPO_CHANGE_L: opt->dccpop_type = DCCPO_CONFIRM_R; break; | 330 | case DCCPO_CHANGE_L: |
| 331 | case DCCPO_CHANGE_R: opt->dccpop_type = DCCPO_CONFIRM_L; break; | 331 | opt->dccpop_type = DCCPO_CONFIRM_R; |
| 332 | default: DCCP_WARN("invalid type %d\n", type); return; | 332 | break; |
| 333 | 333 | case DCCPO_CHANGE_R: | |
| 334 | opt->dccpop_type = DCCPO_CONFIRM_L; | ||
| 335 | break; | ||
| 336 | default: | ||
| 337 | DCCP_WARN("invalid type %d\n", type); | ||
| 338 | kfree(opt); | ||
| 339 | return; | ||
| 334 | } | 340 | } |
| 335 | opt->dccpop_feat = feature; | 341 | opt->dccpop_feat = feature; |
| 336 | opt->dccpop_val = NULL; | 342 | opt->dccpop_val = NULL; |
