Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

container_of: Document container_of() is not to be used in new code

There is a warning in the kerneldoc documentation of container_of() that
constness of its ptr argument is lost. While this is a valid suggestion
container_of_const() should be used instead, the vast majority of new
code still uses container_of():

$ git diff v6.13 v6.14|grep container_of\(|wc -l
646
$ git diff v6.13 v6.14|grep container_of_const|wc -l
9

Make an explicit recommendation to use container_of_const().

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Link: https://lore.kernel.org/r/20250520103437.468691-1-sakari.ailus@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Sakari Ailus and committed by
Greg Kroah-Hartman
35cff7af 6beb4ec0

+3
+3
include/linux/container_of.h
··· 14 14 * @member: the name of the member within the struct. 15 15 * 16 16 * WARNING: any const qualifier of @ptr is lost. 17 + * Do not use container_of() in new code. 17 18 */ 18 19 #define container_of(ptr, type, member) ({ \ 19 20 void *__mptr = (void *)(ptr); \ ··· 29 28 * @ptr: the pointer to the member 30 29 * @type: the type of the container struct this is embedded in. 31 30 * @member: the name of the member within the struct. 31 + * 32 + * Always prefer container_of_const() instead of container_of() in new code. 32 33 */ 33 34 #define container_of_const(ptr, type, member) \ 34 35 _Generic(ptr, \