Re: [PATCH v1] x86/platform/intel-mid: Revert "Make 'bt_sfi_data' const"

From: Ingo Molnar
Date: Thu Dec 28 2017 - 05:28:24 EST



* Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote:

> The annoying static analyzer follow up patches make a pain rather then
> fixing issues.
>
> The one done by commit 276c87054751
>
> ("x86/platform/intel-mid: Make 'bt_sfi_data' const")
>
> made an obvious regression [BugLink] since the struct bt_sfi_data used
> as a temporary container for important data that is used to fill
> 'parent' and 'name' fields in struct platform_device_info.
>
> That's why revert the commit which had been apparently done w/o reading
> the code.
>
> BugLink: https://github.com/andy-shev/linux/issues/20
> Cc: Bhumika Goyal <bhumirks@xxxxxxxxx>
> Cc: julia.lawall@xxxxxxx
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
> ---
> arch/x86/platform/intel-mid/device_libs/platform_bt.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/x86/platform/intel-mid/device_libs/platform_bt.c b/arch/x86/platform/intel-mid/device_libs/platform_bt.c
> index dc036e511f48..5a0483e7bf66 100644
> --- a/arch/x86/platform/intel-mid/device_libs/platform_bt.c
> +++ b/arch/x86/platform/intel-mid/device_libs/platform_bt.c
> @@ -60,7 +60,7 @@ static int __init tng_bt_sfi_setup(struct bt_sfi_data *ddata)
> return 0;
> }
>
> -static const struct bt_sfi_data tng_bt_sfi_data __initdata = {
> +static struct bt_sfi_data tng_bt_sfi_data __initdata = {
> .setup = tng_bt_sfi_setup,
> };

This is nasty, why didn't the compiler warn about this bug?

Normally when using a const data structure for a non-const purpose. (Unless
there's a type cast which loses the type - one of the many reasons why type casts
should be avoided.)

Thanks,

Ingo