From af5ea3c98775f5b7d1b85cad0f364d724fd4616f Mon Sep 17 00:00:00 2001 From: Vasiliy Ulyanov Date: Mon, 19 May 2014 13:00:36 +0400 Subject: [PATCH] [FIX] buffer put in case of erroneous args packing (entry/exit) Change-Id: If50612dc3a2b9c26126b74ddcc37d23872419c09 Signed-off-by: Vasiliy Ulyanov --- writer/swap_writer_module.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/writer/swap_writer_module.c b/writer/swap_writer_module.c index a87cddf..03f8bfc 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; -- 2.7.4