summaryrefslogtreecommitdiff
path: root/writer
diff options
context:
space:
mode:
authorVasiliy Ulyanov <v.ulyanov@samsung.com>2014-05-19 13:00:36 +0400
committerDmitry Kovalenko <d.kovalenko@samsung.com>2014-05-28 04:20:56 -0700
commitaf5ea3c98775f5b7d1b85cad0f364d724fd4616f (patch)
treea9f75e349939bedc4ba60b0b394888c39e7135bd /writer
parentd8bd8e4adc3258b8b7a5eefebdb31da5a239fad3 (diff)
downloadswap-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.c8
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;