On Thu, Mar 07, 2019 at 04:52:20PM +0530, Viresh Kumar wrote: > commit 625c85a62cb7d3c79f6e16de3cfa972033658250 upstream. > > The cpufreq_global_kobject is created using kobject_create_and_add() > helper, which assigns the kobj_type as dynamic_kobj_ktype and show/store > routines are set to kobj_attr_show() and kobj_attr_store(). > > These routines pass struct kobj_attribute as an argument to the > show/store callbacks. But all the cpufreq files created using the > cpufreq_global_kobject expect the argument to be of type struct > attribute. Things work fine currently as no one accesses the "attr" > argument. We may not see issues even if the argument is used, as struct > kobj_attribute has struct attribute as its first element and so they > will both get same address. > > But this is logically incorrect and we should rather use struct > kobj_attribute instead of struct global_attr in the cpufreq core and > drivers and the show/store callbacks should take struct kobj_attribute > as argument instead. > > This bug is caught using CFI CLANG builds in android kernel which > catches mismatch in function prototypes for such callbacks. > > Cc: 4.10 <stable@xxxxxxxxxxxxxxx> # 4.10 Why 4.10? that's a long-dead kernel version :(