diff options
Diffstat (limited to 'net/tipc/msg.c')
| -rw-r--r-- | net/tipc/msg.c | 16 | 
1 files changed, 8 insertions, 8 deletions
| diff --git a/net/tipc/msg.c b/net/tipc/msg.c index a22be502f1bd..ab02d0742476 100644 --- a/net/tipc/msg.c +++ b/net/tipc/msg.c | |||
| @@ -58,12 +58,12 @@ static unsigned int align(unsigned int i) | |||
| 58 | * NOTE: Headroom is reserved to allow prepending of a data link header. | 58 | * NOTE: Headroom is reserved to allow prepending of a data link header. | 
| 59 | * There may also be unrequested tailroom present at the buffer's end. | 59 | * There may also be unrequested tailroom present at the buffer's end. | 
| 60 | */ | 60 | */ | 
| 61 | struct sk_buff *tipc_buf_acquire(u32 size) | 61 | struct sk_buff *tipc_buf_acquire(u32 size, gfp_t gfp) | 
| 62 | { | 62 | { | 
| 63 | struct sk_buff *skb; | 63 | struct sk_buff *skb; | 
| 64 | unsigned int buf_size = (BUF_HEADROOM + size + 3) & ~3u; | 64 | unsigned int buf_size = (BUF_HEADROOM + size + 3) & ~3u; | 
| 65 | 65 | ||
| 66 | skb = alloc_skb_fclone(buf_size, GFP_ATOMIC); | 66 | skb = alloc_skb_fclone(buf_size, gfp); | 
| 67 | if (skb) { | 67 | if (skb) { | 
| 68 | skb_reserve(skb, BUF_HEADROOM); | 68 | skb_reserve(skb, BUF_HEADROOM); | 
| 69 | skb_put(skb, size); | 69 | skb_put(skb, size); | 
| @@ -95,7 +95,7 @@ struct sk_buff *tipc_msg_create(uint user, uint type, | |||
| 95 | struct tipc_msg *msg; | 95 | struct tipc_msg *msg; | 
| 96 | struct sk_buff *buf; | 96 | struct sk_buff *buf; | 
| 97 | 97 | ||
| 98 | buf = tipc_buf_acquire(hdr_sz + data_sz); | 98 | buf = tipc_buf_acquire(hdr_sz + data_sz, GFP_ATOMIC); | 
| 99 | if (unlikely(!buf)) | 99 | if (unlikely(!buf)) | 
| 100 | return NULL; | 100 | return NULL; | 
| 101 | 101 | ||
| @@ -261,7 +261,7 @@ int tipc_msg_build(struct tipc_msg *mhdr, struct msghdr *m, | |||
| 261 | 261 | ||
| 262 | /* No fragmentation needed? */ | 262 | /* No fragmentation needed? */ | 
| 263 | if (likely(msz <= pktmax)) { | 263 | if (likely(msz <= pktmax)) { | 
| 264 | skb = tipc_buf_acquire(msz); | 264 | skb = tipc_buf_acquire(msz, GFP_KERNEL); | 
| 265 | if (unlikely(!skb)) | 265 | if (unlikely(!skb)) | 
| 266 | return -ENOMEM; | 266 | return -ENOMEM; | 
| 267 | skb_orphan(skb); | 267 | skb_orphan(skb); | 
| @@ -282,7 +282,7 @@ int tipc_msg_build(struct tipc_msg *mhdr, struct msghdr *m, | |||
| 282 | msg_set_importance(&pkthdr, msg_importance(mhdr)); | 282 | msg_set_importance(&pkthdr, msg_importance(mhdr)); | 
| 283 | 283 | ||
| 284 | /* Prepare first fragment */ | 284 | /* Prepare first fragment */ | 
| 285 | skb = tipc_buf_acquire(pktmax); | 285 | skb = tipc_buf_acquire(pktmax, GFP_KERNEL); | 
| 286 | if (!skb) | 286 | if (!skb) | 
| 287 | return -ENOMEM; | 287 | return -ENOMEM; | 
| 288 | skb_orphan(skb); | 288 | skb_orphan(skb); | 
| @@ -313,7 +313,7 @@ int tipc_msg_build(struct tipc_msg *mhdr, struct msghdr *m, | |||
| 313 | pktsz = drem + INT_H_SIZE; | 313 | pktsz = drem + INT_H_SIZE; | 
| 314 | else | 314 | else | 
| 315 | pktsz = pktmax; | 315 | pktsz = pktmax; | 
| 316 | skb = tipc_buf_acquire(pktsz); | 316 | skb = tipc_buf_acquire(pktsz, GFP_KERNEL); | 
| 317 | if (!skb) { | 317 | if (!skb) { | 
| 318 | rc = -ENOMEM; | 318 | rc = -ENOMEM; | 
| 319 | goto error; | 319 | goto error; | 
| @@ -448,7 +448,7 @@ bool tipc_msg_make_bundle(struct sk_buff **skb, struct tipc_msg *msg, | |||
| 448 | if (msz > (max / 2)) | 448 | if (msz > (max / 2)) | 
| 449 | return false; | 449 | return false; | 
| 450 | 450 | ||
| 451 | _skb = tipc_buf_acquire(max); | 451 | _skb = tipc_buf_acquire(max, GFP_ATOMIC); | 
| 452 | if (!_skb) | 452 | if (!_skb) | 
| 453 | return false; | 453 | return false; | 
| 454 | 454 | ||
| @@ -496,7 +496,7 @@ bool tipc_msg_reverse(u32 own_node, struct sk_buff **skb, int err) | |||
| 496 | 496 | ||
| 497 | /* Never return SHORT header; expand by replacing buffer if necessary */ | 497 | /* Never return SHORT header; expand by replacing buffer if necessary */ | 
| 498 | if (msg_short(hdr)) { | 498 | if (msg_short(hdr)) { | 
| 499 | *skb = tipc_buf_acquire(BASIC_H_SIZE + dlen); | 499 | *skb = tipc_buf_acquire(BASIC_H_SIZE + dlen, GFP_ATOMIC); | 
| 500 | if (!*skb) | 500 | if (!*skb) | 
| 501 | goto exit; | 501 | goto exit; | 
| 502 | memcpy((*skb)->data + BASIC_H_SIZE, msg_data(hdr), dlen); | 502 | memcpy((*skb)->data + BASIC_H_SIZE, msg_data(hdr), dlen); | 
