Fix: deny overwrite mode and num subbuf less than 2
authorDavid Goulet <dgoulet@efficios.com>
Fri, 23 May 2014 14:32:09 +0000 (10:32 -0400)
committerDavid Goulet <dgoulet@efficios.com>
Fri, 23 May 2014 14:32:09 +0000 (10:32 -0400)
Also fixed in UST and modules with commit:

(modules) 5140d2b3070f211e6d8a0ad7cb0a190e8b6f3e28
(ust) 3d8e9399b2fb9000b3b55e488a7d04184b5bb56e

Fixes #793

Signed-off-by: David Goulet <dgoulet@efficios.com>
doc/man/lttng.1
src/bin/lttng-sessiond/cmd.c

index 483df2aefab2cd8799d6db18e3b7d7c6dc4bf535..09c77d1d3a99feee543c4e96fc7a5555423d0d35 100644 (file)
@@ -402,7 +402,8 @@ Apply to the user-space tracer
 Discard event when subbuffers are full (default)
 .TP
 .BR "\-\-overwrite"
-Flight recorder mode : overwrites events when subbuffers are full
+Flight recorder mode: overwrites events when subbuffers are full. The
+number of subbuffer must be 2 or more.
 .TP
 .BR "\-\-subbuf-size SIZE"
 Subbuffer size in bytes {+k,+M,+G}.
index eb516d3b10c7cbf724c7f7b4c4090db24a510274..2536dc72da28051f9edb6204c834a3b179a5c8fd 100644 (file)
@@ -933,6 +933,16 @@ int cmd_enable_channel(struct ltt_session *session,
                attr->attr.switch_timer_interval = 0;
        }
 
+       /*
+        * The ringbuffer (both in user space and kernel) behave badly in overwrite
+        * mode and with less than 2 subbuf so block it right away and send back an
+        * invalid attribute error.
+        */
+       if (attr->attr.overwrite && attr->attr.num_subbuf < 2) {
+               ret = LTTNG_ERR_INVALID;
+               goto error;
+       }
+
        switch (domain->type) {
        case LTTNG_DOMAIN_KERNEL:
        {
This page took 0.028093 seconds and 4 git commands to generate.