On 2019-12-02, Petr Mladek <pmladek@xxxxxxxx> wrote: >> +/* >> + * Sanity checker for reserve size. The ringbuffer code assumes that a data >> + * block does not exceed the maximum possible size that could fit within the >> + * ringbuffer. This function provides that basic size check so that the >> + * assumption is safe. >> + */ >> +static bool data_check_size(struct prb_data_ring *data_ring, unsigned int size) >> +{ >> + struct prb_data_block *db = NULL; >> + >> + /* Writers are not allowed to write data-less records. */ >> + if (size == 0) >> + return false; > > I would personally let this decision to the API caller. > > The code actually have to support data-less records. They are used > when the descriptor is reserved but the data block can't get reserved. Exactly. Data-less records are how the ringbuffer identifies that data has been lost. If users were allowed to store data-less records, that destinction is no longer possible (unless I created some extra field in the descriptor). Does it even make sense for printk to store data-less records explicitly? The current printk implementation silently ignores empty messages. > The above statement might create false feeling that it could not > happen later in the code. It might lead to bugs in writer code. Then let me change the statement to describe that data-less records are used internally by the ringbuffer and cannot be explicitly created by writers. > Also reader API users might not expect to get a "valid" data-less > record. Readers will never see them. The reader API implementation skips over data-less records. John Ogness _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec