summaryrefslogtreecommitdiffstats
path: root/lib/sg_split.c
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2017-10-04 11:10:07 +0200
committerUlf Hansson <ulf.hansson@linaro.org>2017-10-30 11:44:49 +0100
commit1c87f73578497a6c3cc77bcbfd2e5bf15fe753c7 (patch)
tree799c9294c9474bc8af92a9fa734be06f228488d8 /lib/sg_split.c
parent14f4ca7e4d2825f9f71e22905ae177b899959f1d (diff)
downloadop-kernel-dev-1c87f73578497a6c3cc77bcbfd2e5bf15fe753c7.zip
op-kernel-dev-1c87f73578497a6c3cc77bcbfd2e5bf15fe753c7.tar.gz
mmc: block: Fix bug when removing RPMB chardev
I forgot to account for the fact that the device core holds a reference to a device added with device_initialize() that need to be released with a corresponding put_device() to reach a 0 refcount at the end of the lifecycle. This led to a NULL pointer reference when freeing the device when e.g. unbidning the host device in sysfs. Fix this and use the device .release() callback to free the IDA and free:ing the memory used by the RPMB device. Before this patch: /sys/bus/amba/drivers/mmci-pl18x$ echo 80114000.sdi4_per2 > unbind [ 29.797332] mmc3: card 0001 removed [ 29.810791] Unable to handle kernel NULL pointer dereference at virtual address 00000050 [ 29.818878] pgd = de70c000 [ 29.821624] [00000050] *pgd=1e70a831, *pte=00000000, *ppte=00000000 [ 29.827911] Internal error: Oops: 17 [#1] PREEMPT SMP ARM [ 29.833282] Modules linked in: [ 29.836334] CPU: 1 PID: 154 Comm: sh Not tainted 4.14.0-rc3-00039-g83318e309566-dirty #736 [ 29.844604] Hardware name: ST-Ericsson Ux5x0 platform (Device Tree Support) [ 29.851562] task: de572700 task.stack: de742000 [ 29.856079] PC is at kernfs_find_ns+0x8/0x100 [ 29.860443] LR is at kernfs_find_and_get_ns+0x30/0x48 After this patch: /sys/bus/amba/drivers/mmci-pl18x$ echo 80005000.sdi4_per2 > unbind [ 20.623382] mmc3: card 0001 removed Fixes: 97548575bef3 ("mmc: block: Convert RPMB to a character device") Reported-by: Adrian Hunter <adrian.hunter@intel.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Acked-by: Adrian Hunter <adrian.hunter@intel.com> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Diffstat (limited to 'lib/sg_split.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud