Greg Kroah-Hartman
2a81ada32f
driver core: make struct bus_type.uevent() take a const *
...
The uevent() callback in struct bus_type should not be modifying the
device that is passed into it, so mark it as a const * and propagate the
function signature changes out into all relevant subsystems that use
this callback.
Acked-by: Rafael J. Wysocki <rafael@kernel.org >
Acked-by: Hans de Goede <hdegoede@redhat.com >
Link: https://lore.kernel.org/r/20230111113018.459199-16-gregkh@linuxfoundation.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2023-01-27 13:45:52 +01:00
Zhengchao Shao
d723746256
drivers: mcb: fix resource leak in mcb_probe()
...
When probe hook function failed in mcb_probe(), it doesn't put the device.
Compiled test only.
Fixes: 7bc364097a ("mcb: Acquire reference to device in probe")
Signed-off-by: Zhengchao Shao <shaozhengchao@huawei.com >
Signed-off-by: Johannes Thumshirn <jth@kernel.org >
Link: https://lore.kernel.org/r/9f87de36bfb85158b506cb78c6fc9db3f6a3bad1.1669624063.git.johannes.thumshirn@wdc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2022-12-02 17:48:04 +01:00
keliu
3af0b1d34a
drivers: mcb: directly use ida_alloc()/free()
...
Use ida_alloc()/ida_free() instead of deprecated
ida_simple_get()/ida_simple_remove() .
Signed-off-by: keliu <liuke94@huawei.com >
Signed-off-by: Johannes Thumshirn <jth@kernel.org >
Link: https://lore.kernel.org/r/480676bee970da16bf1fa8565277240014395ba3.1657607743.git.johannes.thumshirn@wdc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2022-07-12 09:04:55 +02:00
Dan Carpenter
25a1433216
mcb: fix error handling in mcb_alloc_bus()
...
There are two bugs:
1) If ida_simple_get() fails then this code calls put_device(carrier)
but we haven't yet called get_device(carrier) and probably that
leads to a use after free.
2) After device_initialize() then we need to use put_device() to
release the bus. This will free the internal resources tied to the
device and call mcb_free_bus() which will free the rest.
Fixes: 5d9e2ab9fe ("mcb: Implement bus->dev.release callback")
Fixes: 18d2881980 ("mcb: Correctly initialize the bus's device")
Cc: stable@vger.kernel.org
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com >
Signed-off-by: Johannes Thumshirn <jth@kernel.org >
Link: https://lore.kernel.org/r/32e160cf6864ce77f9d62948338e24db9fd8ead9.1630931319.git.johannes.thumshirn@wdc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-09-14 11:22:26 +02:00
Uwe Kleine-König
fc7a6209d5
bus: Make remove callback return void
...
The driver core ignores the return value of this callback because there
is only little it can do when a device disappears.
This is the final bit of a long lasting cleanup quest where several
buses were converted to also return void from their remove callback.
Additionally some resource leaks were fixed that were caused by drivers
returning an error code in the expectation that the driver won't go
away.
With struct bus_type::remove returning void it's prevented that newly
implemented buses return an ignored error code and so don't anticipate
wrong expectations for driver authors.
Reviewed-by: Tom Rix <trix@redhat.com > (For fpga)
Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org >
Reviewed-by: Cornelia Huck <cohuck@redhat.com > (For drivers/s390 and drivers/vfio)
Acked-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk > (For ARM, Amba and related parts)
Acked-by: Mark Brown <broonie@kernel.org >
Acked-by: Chen-Yu Tsai <wens@csie.org > (for sunxi-rsb)
Acked-by: Pali Rohár <pali@kernel.org >
Acked-by: Mauro Carvalho Chehab <mchehab@kernel.org > (for media)
Acked-by: Hans de Goede <hdegoede@redhat.com > (For drivers/platform)
Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com >
Acked-By: Vinod Koul <vkoul@kernel.org >
Acked-by: Juergen Gross <jgross@suse.com > (For xen)
Acked-by: Lee Jones <lee.jones@linaro.org > (For mfd)
Acked-by: Johannes Thumshirn <jth@kernel.org > (For mcb)
Acked-by: Johan Hovold <johan@kernel.org >
Acked-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org > (For slimbus)
Acked-by: Kirti Wankhede <kwankhede@nvidia.com > (For vfio)
Acked-by: Maximilian Luz <luzmaximilian@gmail.com >
Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com > (For ulpi and typec)
Acked-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com > (For ipack)
Acked-by: Geoff Levand <geoff@infradead.org > (For ps3)
Acked-by: Yehezkel Bernat <YehezkelShB@gmail.com > (For thunderbolt)
Acked-by: Alexander Shishkin <alexander.shishkin@linux.intel.com > (For intel_th)
Acked-by: Dominik Brodowski <linux@dominikbrodowski.net > (For pcmcia)
Acked-by: Rafael J. Wysocki <rafael@kernel.org > (For ACPI)
Acked-by: Bjorn Andersson <bjorn.andersson@linaro.org > (rpmsg and apr)
Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com > (For intel-ish-hid)
Acked-by: Dan Williams <dan.j.williams@intel.com > (For CXL, DAX, and NVDIMM)
Acked-by: William Breathitt Gray <vilhelm.gray@gmail.com > (For isa)
Acked-by: Stefan Richter <stefanr@s5r6.in-berlin.de > (For firewire)
Acked-by: Benjamin Tissoires <benjamin.tissoires@redhat.com > (For hid)
Acked-by: Thorsten Scherer <t.scherer@eckelmann.de > (For siox)
Acked-by: Sven Van Asbroeck <TheSven73@gmail.com > (For anybuss)
Acked-by: Ulf Hansson <ulf.hansson@linaro.org > (For MMC)
Acked-by: Wolfram Sang <wsa@kernel.org > # for I2C
Acked-by: Sudeep Holla <sudeep.holla@arm.com >
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org >
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com >
Acked-by: Finn Thain <fthain@linux-m68k.org >
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de >
Link: https://lore.kernel.org/r/20210713193522.1770306-6-u.kleine-koenig@pengutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2021-07-21 11:53:42 +02:00
Johannes Thumshirn
891e60368b
drivers: mcb: use symbol namespaces
...
Now that we have symbol namespaces, use them in MCB to not pollute the
default namespace with MCB internals.
Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de >
Reviewed-by: Jessica Yu <jeyu@kernel.org >
Reviewed-by: Michael Moese <mmoese@suse.de >
Link: https://lore.kernel.org/r/20191016100158.1400-1-jthumshirn@suse.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2019-11-03 19:54:53 +01:00
Thomas Gleixner
b886d83c5b
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441
...
Based on 1 normalized pattern(s):
this program is free software you can redistribute it and or modify
it under the terms of the gnu general public license as published by
the free software foundation version 2 of the license
extracted by the scancode license scanner the SPDX license identifier
GPL-2.0-only
has been chosen to replace the boilerplate/reference in 315 file(s).
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Allison Randal <allison@lohutok.net >
Reviewed-by: Armijn Hemel <armijn@tjaldur.nl >
Cc: linux-spdx@vger.kernel.org
Link: https://lkml.kernel.org/r/20190531190115.503150771@linutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2019-06-05 17:37:17 +02:00
Johannes Thumshirn
2ce8008711
mcb: introduce mcb_get_resource()
...
Introduce mcb_get_resource() as a common accessor to a mcb device's memory or
IRQ resources.
Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de >
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2017-08-28 20:51:22 +02:00
Michael Moese
2d8784df1a
mcb: Add a dma_device to mcb_device
...
When performing DMA operations on a MCB device, the device needed
for using the DMA API is "mcb_device->bus_carrier".
This is rather lengthy, so a shortcut is introduced to struct mcb_device
in order to ensure the MCB device driver uses the correct device for DMA
operations.
Signed-off-by: Michael Moese <michael.moese@men.de >
Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de >
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2016-09-27 12:33:47 +02:00
Johannes Thumshirn
b58189b3c5
mcb: remove sub-device handling code
...
The MEN Chameleon specification states that a chameleon FPGA can include a
bridge descriptor, which then opens up a new bus behind this bridge. MCB
included subdevice handling code in the core, but no support for bus
descriptors in the parser, due to a lack of hardware access.
As this is technically dead code, but it gets executed on a device add,
I've decided to remove it.
Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de >
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2016-08-31 13:16:24 +02:00
Johannes Thumshirn
4d2ec85753
mcb: Acquire reference to carrier module in core
...
Acquire a reference to the carrier's kernel module in bus code, so
it can't be removed from the kernel while it still has a bus and thus
possibly devices attached to it.
Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de >
Reported-by: Andreas Werner <andreas.werner@men.de >
Tested-by: Andreas Werner <andreas.werner@men.de >
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2016-06-13 18:49:30 -07:00
Johannes Thumshirn
7bc364097a
mcb: Acquire reference to device in probe
...
mcb_probe() does not aqcuire a reference to the probed device but drops one
when removing the device. As it is actually using the device, it should grab
a reference via get_device().
This could lead to a panic found with a rmmod/modprobe stress test
Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de >
Reported-by: Andreas Werner <andreas.werner@men.de >
Tested-by: Andreas Werner <andreas.werner@men.de >
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2016-06-13 18:49:30 -07:00
Johannes Thumshirn
5d9e2ab9fe
mcb: Implement bus->dev.release callback
...
The mcb_bus structure previously was released in mcb_release_bus. This lead to
the following warning on module unload:
------------[ cut here ]------------
WARNING: CPU: 1 PID: 2032 at drivers/base/core.c:251 device_release+0x73/0x90
Device 'mcb:0' does not have a release() function, it is broken and must be fixed.
Modules linked in: men_z135_uart mcb_pci(-) mcb
CPU: 1 PID: 2032 Comm: rmmod Not tainted 4.6.0-rc4+ #3
Hardware name: N/A N/A/COMe-mBTi10, BIOS MVV1R921 X64 10/14/2015
00000286 00000286 c0117de4 c12d6f16 c0117e2c c18be0d3 c0117dfc c104f6e1
000000fb f5ccbe08 f5ccbe00 f5c64600 c0117e18 c104f728 00000009 00000000
c0117e10 c18db674 c0117e2c c0117e3c c13ce5c3 c18be0d3 000000fb c18db674
Call Trace:
[<c12d6f16>] dump_stack+0x47/0x61
[<c104f6e1>] __warn+0xc1/0xe0
[<c104f728>] warn_slowpath_fmt+0x28/0x30
[<c13ce5c3>] device_release+0x73/0x90
[<c12d92e4>] kobject_release+0x34/0x80
[<c12d929d>] ? kobject_del+0x2d/0x40
[<c12d9205>] kobject_put+0x25/0x50
[<c13ce77f>] put_device+0xf/0x20
[<c13d114b>] klist_devices_put+0xb/0x10
[<c1752673>] klist_next+0x73/0xf0
[<c13d1140>] ? unbind_store+0x100/0x100
[<f8a23370>] ? mcb_bus_add_devices+0x30/0x30 [mcb]
[<c13d0a81>] bus_for_each_dev+0x51/0x80
[<f8a23319>] mcb_release_bus+0x19/0x40 [mcb]
[<f8a23370>] ? mcb_bus_add_devices+0x30/0x30 [mcb]
[<f8a2b033>] mcb_pci_remove+0x13/0x20 [mcb_pci]
[<c130d358>] pci_device_remove+0x28/0xb0
[<c13d201b>] __device_release_driver+0x7b/0x110
[<c13d2847>] driver_detach+0x87/0x90
[<c13d1b9b>] bus_remove_driver+0x3b/0x80
[<c13d2ed0>] driver_unregister+0x20/0x50
[<c130be53>] pci_unregister_driver+0x13/0x60
[<f8a2b1f4>] mcb_pci_driver_exit+0xd/0xf [mcb_pci]
[<c10be588>] SyS_delete_module+0x138/0x200
[<c1159208>] ? ____fput+0x8/0x10
[<c1068054>] ? task_work_run+0x74/0x90
[<c1001879>] do_fast_syscall_32+0x69/0x120
[<c1757597>] sysenter_past_esp+0x40/0x6a
---[ end trace 1ed34c2aa3019875 ]---
Release a mcb_bus' memory on the device's release callback, to avoid above
warning.
Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de >
Reported-by: Andreas Werner <andreas.werner@men.de >
Tested-by: Andreas Werner <andreas.werner@men.de >
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2016-05-03 15:52:28 -07:00
Johannes Thumshirn
803f1ca60d
mcb: export bus information via sysfs
...
Export information about the bus stored in the FPGA's header to userspace via
sysfs, instead of hiding it in pr_debug()s from everyone.
Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de >
Reviewed-by: Andreas Werner <andreas.werner@men.de >
Tested-by: Andreas Werner <andreas.werner@men.de >
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2016-05-03 15:07:35 -07:00
Johannes Thumshirn
18d2881980
mcb: Correctly initialize the bus's device
...
The mcb bus' device member wasn't correctly initialized and thus wasn't placed
correctly into the driver model.
Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de >
Reviewed-by: Andreas Werner <andreas.werner@men.de >
Tested-by: Andreas Werner <andreas.werner@men.de >
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2016-05-03 15:07:35 -07:00
Johannes Thumshirn
169883a63e
mcb: Destroy IDA on module unload
...
Destroy mcb_ida on module_unload
Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de >
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2015-10-29 09:02:16 +09:00
Johannes Thumshirn
4ec65b77c6
mcb: Add support for shared PCI IRQs
...
Add support for shared PCI IRQs to mcb and mcb-pci.
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@men.de >
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2014-05-27 17:38:11 -07:00
Johannes Thumshirn
3764e82e51
drivers: Introduce MEN Chameleon Bus
...
The MCB (MEN Chameleon Bus) is a Bus specific to MEN Mikroelektronik
FPGA based devices. It is used to identify MCB based IP-Cores within
an FPGA and provide the necessary framework for instantiating drivers
for these devices.
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@men.de >
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2014-02-28 15:36:37 -08:00