On Mon, May 4, 2020 at 10:52 PM Pavel Tatashin <pasha.tatashin@xxxxxxxxxx> wrote: > > > > @@ -3157,12 +3162,9 @@ void kmsg_dump(enum kmsg_dump_reason reason) > > > struct kmsg_dumper *dumper; > > > unsigned long flags; > > > > > > - if ((reason > KMSG_DUMP_OOPS) && !always_kmsg_dump) > > > - return; > > > - > > > rcu_read_lock(); > > > list_for_each_entry_rcu(dumper, &dump_list, list) { > > > - if (dumper->max_reason && reason > dumper->max_reason) > > > + if (reason > dumper->max_reason) > > > continue; > > > > Why always_kmsg_dump check moved from the dumper loop entry point to the > > dumper registration code? What if the user change always_ksmsg_dump > > dynamically via sysfs? > > Hi Sergey, > > I changed it to make code cleaner: for such basic operation there are > too many conditions if we will keep it inside the kmsg_dump(). > However, if being able to set always_kmsg_dump dynamically during > runtime is deemed important, I can change it back to be checked in > kmsg_dump. If you agree that we do not have to modify this variable dynamically, I will also change the permission here: module_param_named(always_kmsg_dump, always_kmsg_dump, bool, S_IRUGO | S_IWUSR); > > Thank you, > Pasha > > > > > -ss