]> git.baikalelectronics.ru Git - kernel.git/commit
powerpc/powernv: Fix missing attr initialisation in opal_export_attrs()
authorMichael Ellerman <mpe@ellerman.id.au>
Wed, 26 Apr 2017 05:57:19 +0000 (15:57 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 26 Apr 2017 05:57:19 +0000 (15:57 +1000)
commit3d668814e09ff4ac069b7e8c6226c0df5dcc3759
treef255af3ab0c58105b4d7e5f1e937c9e53b70ac7d
parent13d15e950c738f32f0ea7b156ff07b36c3e32fac
powerpc/powernv: Fix missing attr initialisation in opal_export_attrs()

In opal_export_attrs() we dynamically allocate some bin_attributes. They're
allocated with kmalloc() and although we initialise most of the fields, we don't
initialise write() or mmap(), and in particular we don't initialise the lockdep
related fields in the embedded struct attribute.

This leads to a lockdep warning at boot:

  BUG: key c0000000f11906d8 not in .data!
  WARNING: CPU: 0 PID: 1 at ../kernel/locking/lockdep.c:3136 lockdep_init_map+0x28c/0x2a0
  ...
  Call Trace:
    lockdep_init_map+0x288/0x2a0 (unreliable)
    __kernfs_create_file+0x8c/0x170
    sysfs_add_file_mode_ns+0xc8/0x240
    __machine_initcall_powernv_opal_init+0x60c/0x684
    do_one_initcall+0x60/0x1c0
    kernel_init_freeable+0x2f4/0x3d4
    kernel_init+0x24/0x160
    ret_from_kernel_thread+0x5c/0xb0

Fix it by kzalloc'ing the attr, which fixes the uninitialised write() and
mmap(), and calling sysfs_bin_attr_init() on it to initialise the lockdep
fields.

Fixes: 48409f391e78 ("powerpc/powernv: Add OPAL exports attributes to sysfs")
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/platforms/powernv/opal.c