diff options
author | Vasiliy Ulyanov <v.ulyanov@samsung.com> | 2014-05-19 13:00:36 +0400 |
---|---|---|
committer | Dmitry Kovalenko <d.kovalenko@samsung.com> | 2014-05-28 04:20:56 -0700 |
commit | af5ea3c98775f5b7d1b85cad0f364d724fd4616f (patch) | |
tree | a9f75e349939bedc4ba60b0b394888c39e7135bd /writer | |
parent | d8bd8e4adc3258b8b7a5eefebdb31da5a239fad3 (diff) | |
download | swap-modules-af5ea3c98775f5b7d1b85cad0f364d724fd4616f.tar.gz swap-modules-af5ea3c98775f5b7d1b85cad0f364d724fd4616f.tar.bz2 swap-modules-af5ea3c98775f5b7d1b85cad0f364d724fd4616f.zip |
[FIX] buffer put in case of erroneous args packing (entry/exit)
Change-Id: If50612dc3a2b9c26126b74ddcc37d23872419c09
Signed-off-by: Vasiliy Ulyanov <v.ulyanov@samsung.com>
Diffstat (limited to 'writer')
-rw-r--r-- | writer/swap_writer_module.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/writer/swap_writer_module.c b/writer/swap_writer_module.c index a87cddfb..03f8bfc6 100644 --- a/writer/swap_writer_module.c +++ b/writer/swap_writer_module.c @@ -758,7 +758,7 @@ int entry_event(const char *fmt, unsigned long func_addr, struct pt_regs *regs, ret = pack_args(args, 1024, fmt, regs); if (ret < 0) { printk("ERROR: !!!!!\n"); - return ret; + goto put_buf; } buf_end = args + ret; @@ -766,6 +766,8 @@ int entry_event(const char *fmt, unsigned long func_addr, struct pt_regs *regs, set_len_msg(buf, buf_end); ret = write_to_buffer(buf); + +put_buf: put_current_buf(); return ret; @@ -910,12 +912,14 @@ int exit_event(char ret_type, struct pt_regs *regs, unsigned long func_addr, ret = pack_msg_func_exit(payload, 1024, ret_type, regs, func_addr, ret_addr); if (ret < 0) - return ret; + goto put_buf; buf_end = payload + ret; set_len_msg(buf, buf_end); ret = write_to_buffer(buf); + +put_buf: put_current_buf(); return ret; |