[FIX] buffer put in case of erroneous args packing (entry/exit) 55/21355/3
authorVasiliy Ulyanov <v.ulyanov@samsung.com>
Mon, 19 May 2014 09:00:36 +0000 (13:00 +0400)
committerDmitry Kovalenko <d.kovalenko@samsung.com>
Wed, 28 May 2014 11:20:56 +0000 (04:20 -0700)
Change-Id: If50612dc3a2b9c26126b74ddcc37d23872419c09
Signed-off-by: Vasiliy Ulyanov <v.ulyanov@samsung.com>
writer/swap_writer_module.c

index a87cddf..03f8bfc 100644 (file)
@@ -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;