[PATCH] simplify container_of_const()

Alexey Dobriyan posted 1 patch 1 year, 6 months ago
include/linux/container_of.h |    6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
[PATCH] simplify container_of_const()
Posted by Alexey Dobriyan 1 year, 6 months ago
* add necessary parenthesis so that

	container_of_const((expr1, expr2), T, member)

  compiles without warnings,

* delete unnecessary parenthesis,

* delete unnecessary cast:

	container_of(ptr, T, member)

  has type "T*" and doesn't need any more casts.

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
---

 include/linux/container_of.h |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

--- a/include/linux/container_of.h
+++ b/include/linux/container_of.h
@@ -30,9 +30,9 @@
  * @member:		the name of the member within the struct.
  */
 #define container_of_const(ptr, type, member)				\
-	_Generic(ptr,							\
-		const typeof(*(ptr)) *: ((const type *)container_of(ptr, type, member)),\
-		default: ((type *)container_of(ptr, type, member))	\
+	_Generic((ptr),							\
+		const typeof(*(ptr)) *: (const type *)container_of(ptr, type, member),\
+		default: container_of(ptr, type, member)		\
 	)
 
 #endif	/* _LINUX_CONTAINER_OF_H */
Re: [PATCH] simplify container_of_const()
Posted by Alexey Dobriyan 1 year, 6 months ago
On Fri, Jul 19, 2024 at 10:19:37PM +0300, Alexey Dobriyan wrote:
> * add necessary parenthesis so that
> 
> 	container_of_const((expr1, expr2), T, member)
> 
>   compiles without warnings,

This part is bogus, I'm not sure why I wrote this.

> --- a/include/linux/container_of.h
> +++ b/include/linux/container_of.h
> @@ -30,9 +30,9 @@
>   * @member:		the name of the member within the struct.
>   */
>  #define container_of_const(ptr, type, member)				\
> -	_Generic(ptr,							\
> -		const typeof(*(ptr)) *: ((const type *)container_of(ptr, type, member)),\
> -		default: ((type *)container_of(ptr, type, member))	\
> +	_Generic((ptr),							\

someone could sneak in additional clause...

> +		const typeof(*(ptr)) *: (const type *)container_of(ptr, type, member),\
> +		default: container_of(ptr, type, member)		\