diff options
| author | Allan Stephens <allan.stephens@windriver.com> | 2008-05-05 04:20:42 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2008-05-05 04:20:42 -0400 |
| commit | fb98ec71c7f81b6db9b793aeb9d53823b6960d8b (patch) | |
| tree | ef526b18473b2772d9d9142ef41e7061b2e1cf0c /net | |
| parent | 025adbe8e58290798001b472aec3eb618d8fc930 (diff) | |
tipc: Provide feedback when log buffer resizing fails
This patch provides feedback to the user when TIPC is unable
to set its log buffer to the requested size.
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
| -rw-r--r-- | net/tipc/dbg.c | 13 | ||||
| -rw-r--r-- | net/tipc/dbg.h | 4 |
2 files changed, 12 insertions, 5 deletions
diff --git a/net/tipc/dbg.c b/net/tipc/dbg.c index 1a8d0a24d9e3..c6806910598c 100644 --- a/net/tipc/dbg.c +++ b/net/tipc/dbg.c | |||
| @@ -2,7 +2,7 @@ | |||
| 2 | * net/tipc/dbg.c: TIPC print buffer routines for debugging | 2 | * net/tipc/dbg.c: TIPC print buffer routines for debugging |
| 3 | * | 3 | * |
| 4 | * Copyright (c) 1996-2006, Ericsson AB | 4 | * Copyright (c) 1996-2006, Ericsson AB |
| 5 | * Copyright (c) 2005-2006, Wind River Systems | 5 | * Copyright (c) 2005-2007, Wind River Systems |
| 6 | * All rights reserved. | 6 | * All rights reserved. |
| 7 | * | 7 | * |
| 8 | * Redistribution and use in source and binary forms, with or without | 8 | * Redistribution and use in source and binary forms, with or without |
| @@ -354,8 +354,10 @@ void tipc_dump(struct print_buf *pb, const char *fmt, ...) | |||
| 354 | * @log_size: print buffer size to use | 354 | * @log_size: print buffer size to use |
| 355 | */ | 355 | */ |
| 356 | 356 | ||
| 357 | void tipc_log_resize(int log_size) | 357 | int tipc_log_resize(int log_size) |
| 358 | { | 358 | { |
| 359 | int res = 0; | ||
| 360 | |||
| 359 | spin_lock_bh(&print_lock); | 361 | spin_lock_bh(&print_lock); |
| 360 | if (TIPC_LOG->buf) { | 362 | if (TIPC_LOG->buf) { |
| 361 | kfree(TIPC_LOG->buf); | 363 | kfree(TIPC_LOG->buf); |
| @@ -366,8 +368,11 @@ void tipc_log_resize(int log_size) | |||
| 366 | log_size = TIPC_PB_MIN_SIZE; | 368 | log_size = TIPC_PB_MIN_SIZE; |
| 367 | tipc_printbuf_init(TIPC_LOG, kmalloc(log_size, GFP_ATOMIC), | 369 | tipc_printbuf_init(TIPC_LOG, kmalloc(log_size, GFP_ATOMIC), |
| 368 | log_size); | 370 | log_size); |
| 371 | res = !TIPC_LOG->buf; | ||
| 369 | } | 372 | } |
| 370 | spin_unlock_bh(&print_lock); | 373 | spin_unlock_bh(&print_lock); |
| 374 | |||
| 375 | return res; | ||
| 371 | } | 376 | } |
| 372 | 377 | ||
| 373 | /** | 378 | /** |
| @@ -385,7 +390,9 @@ struct sk_buff *tipc_log_resize_cmd(const void *req_tlv_area, int req_tlv_space) | |||
| 385 | if (value != delimit(value, 0, 32768)) | 390 | if (value != delimit(value, 0, 32768)) |
| 386 | return tipc_cfg_reply_error_string(TIPC_CFG_INVALID_VALUE | 391 | return tipc_cfg_reply_error_string(TIPC_CFG_INVALID_VALUE |
| 387 | " (log size must be 0-32768)"); | 392 | " (log size must be 0-32768)"); |
| 388 | tipc_log_resize(value); | 393 | if (tipc_log_resize(value)) |
| 394 | return tipc_cfg_reply_error_string( | ||
| 395 | "unable to create specified log (log size is now 0)"); | ||
| 389 | return tipc_cfg_reply_none(); | 396 | return tipc_cfg_reply_none(); |
| 390 | } | 397 | } |
| 391 | 398 | ||
diff --git a/net/tipc/dbg.h b/net/tipc/dbg.h index 718a5db245b5..6b00062bf040 100644 --- a/net/tipc/dbg.h +++ b/net/tipc/dbg.h | |||
| @@ -2,7 +2,7 @@ | |||
| 2 | * net/tipc/dbg.h: Include file for TIPC print buffer routines | 2 | * net/tipc/dbg.h: Include file for TIPC print buffer routines |
| 3 | * | 3 | * |
| 4 | * Copyright (c) 1997-2006, Ericsson AB | 4 | * Copyright (c) 1997-2006, Ericsson AB |
| 5 | * Copyright (c) 2005-2006, Wind River Systems | 5 | * Copyright (c) 2005-2007, Wind River Systems |
| 6 | * All rights reserved. | 6 | * All rights reserved. |
| 7 | * | 7 | * |
| 8 | * Redistribution and use in source and binary forms, with or without | 8 | * Redistribution and use in source and binary forms, with or without |
| @@ -61,7 +61,7 @@ int tipc_printbuf_empty(struct print_buf *pb); | |||
| 61 | int tipc_printbuf_validate(struct print_buf *pb); | 61 | int tipc_printbuf_validate(struct print_buf *pb); |
| 62 | void tipc_printbuf_move(struct print_buf *pb_to, struct print_buf *pb_from); | 62 | void tipc_printbuf_move(struct print_buf *pb_to, struct print_buf *pb_from); |
| 63 | 63 | ||
| 64 | void tipc_log_resize(int log_size); | 64 | int tipc_log_resize(int log_size); |
| 65 | 65 | ||
| 66 | struct sk_buff *tipc_log_resize_cmd(const void *req_tlv_area, | 66 | struct sk_buff *tipc_log_resize_cmd(const void *req_tlv_area, |
| 67 | int req_tlv_space); | 67 | int req_tlv_space); |
