X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=lib%2Fringbuffer%2Fring_buffer_backend.c;h=f18ccc1a59c6f1972c5110b64a2341883fa6fe0c;hb=bbda3a00431e819ecfbe0056eaa598100c848e0c;hp=bfe63d7b34b913c8307ba4ae7cb17221a18287f1;hpb=4d1704b64f53c4e188eff3e61f857fac20860ac6;p=lttng-modules.git diff --git a/lib/ringbuffer/ring_buffer_backend.c b/lib/ringbuffer/ring_buffer_backend.c index bfe63d7b..f18ccc1a 100644 --- a/lib/ringbuffer/ring_buffer_backend.c +++ b/lib/ringbuffer/ring_buffer_backend.c @@ -307,19 +307,17 @@ int channel_backend_init(struct channel_backend *chanb, if (!name) return -EPERM; - if (!(subbuf_size && num_subbuf)) - return -EPERM; - /* Check that the subbuffer size is larger than a page. */ if (subbuf_size < PAGE_SIZE) return -EINVAL; /* - * Make sure the number of subbuffers and subbuffer size are power of 2. + * Make sure the number of subbuffers and subbuffer size are + * power of 2 and nonzero. */ - if (hweight32(subbuf_size) != 1) + if (!subbuf_size || (subbuf_size & (subbuf_size - 1))) return -EINVAL; - if (hweight32(num_subbuf) != 1) + if (!num_subbuf || (num_subbuf & (num_subbuf - 1))) return -EINVAL; ret = subbuffer_id_check_index(config, num_subbuf);