History

kfifo: fix kfifo_alloc() and kfifo_init()

Fix kfifo_alloc() and kfifo_init() to alloc at least the requested number of elements. Since the kfifo operates on power of 2 the request size will be rounded up to the next power of two.

Stefani Seibold committed 13 years ago

Commit dfe2a771 parent c759b351 file · +2 −4Browse files

Showing the changes to lib (1 of 1 file). Show all

Unified · Split

lib/kfifo.c+2−4
@@ -42,8 +42,7 @@ int __kfifo_alloc(struct __kfifo *fifo, unsigned int size, · 41 unmodified lines
42 * round down to the next power of 2, since our 'let the indices42 * round down to the next power of 2, since our 'let the indices
43 * wrap' technique works only in this case.43 * wrap' technique works only in this case.
44 */44 */
45 if (!is_power_of_2(size))45 size = roundup_pow_of_two(size);
46 size = rounddown_pow_of_two(size);
47 46
48 fifo->in = 0;47 fifo->in = 0;
49 fifo->out = 0;48 fifo->out = 0;
@@ -83,8 +82,7 @@ int __kfifo_init(struct __kfifo *fifo, void *buffer, · 33 unmodified lines
83{82{
84 size /= esize;83 size /= esize;
85 84
86 if (!is_power_of_2(size))85 size = roundup_pow_of_two(size);
87 size = rounddown_pow_of_two(size);
88 86
89 fifo->in = 0;87 fifo->in = 0;
90 fifo->out = 0;88 fifo->out = 0;