Re: [PATCH v8-RESEND 04/33] dyndbg: make ddebug_class_param union members same size

From: Łukasz Bartosik
Date: Tue May 21 2024 - 07:42:27 EST


On Thu, May 16, 2024 at 7:44 PM Jim Cromie <jim.cromie@xxxxxxxxx> wrote:
>
> struct ddebug_class_param keeps a ref to the state-storage of the
> param; make both class-types use the same unsigned long storage type.
> ISTM this is simpler and safer.

Why is it safer for members of a union to have the same size ?


>
> Signed-off-by: Jim Cromie <jim.cromie@xxxxxxxxx>
> ---
> include/linux/dynamic_debug.h | 2 +-
> lib/dynamic_debug.c | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h
> index 4fcbf4d4fd0a..5231aaf361c4 100644
> --- a/include/linux/dynamic_debug.h
> +++ b/include/linux/dynamic_debug.h
> @@ -124,7 +124,7 @@ struct _ddebug_info {
> struct ddebug_class_param {
> union {
> unsigned long *bits;
> - unsigned int *lvl;
> + unsigned long *lvl;
> };
> char flags[8];
> const struct ddebug_class_map *map;
> diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c
> index 73ccf947d4aa..152b04c05981 100644
> --- a/lib/dynamic_debug.c
> +++ b/lib/dynamic_debug.c
> @@ -799,7 +799,7 @@ int param_get_dyndbg_classes(char *buffer, const struct kernel_param *kp)
>
> case DD_CLASS_TYPE_LEVEL_NAMES:
> case DD_CLASS_TYPE_LEVEL_NUM:
> - return scnprintf(buffer, PAGE_SIZE, "%d\n", *dcp->lvl);
> + return scnprintf(buffer, PAGE_SIZE, "%ld\n", *dcp->lvl);
> default:
> return -1;
> }
> --
> 2.45.0
>