WSL2-Linux-Kernel/drivers
Paul Bolle 8d2c3ab444 ser_gigaset: use container_of() instead of detour
The purpose of gigaset_device_release() is to kfree() the struct
ser_cardstate that contains our struct device. This is done via a bit of
a detour. First we make our struct device's driver_data point to the
container of our struct ser_cardstate (which is a struct cardstate). In
gigaset_device_release() we then retrieve that driver_data again. And
after that we finally kfree() the struct ser_cardstate that was saved in
the struct cardstate.

All of this can be achieved much easier by using container_of() to get
from our struct device to its container, struct ser_cardstate. Do so.

Note that at the time the detour was implemented commit b8b2c7d845
("base/platform: assert that dev_pm_domain callbacks are called
unconditionally") had just entered the tree. That commit disconnected
our platform_device and our platform_driver. These were reconnected
again in v4.5-rc2 through commit 25cad69f21 ("base/platform: Fix
platform drivers with no probe callback"). And one of the consequences
of that fix was that it broke the detour via driver_data. That's because
it made __device_release_driver() stop being a NOP for our struct device
and actually do stuff again. One of the things it now does, is setting
our driver_data to NULL. That, in turn, makes it impossible for
gigaset_device_release() to get to our struct cardstate. Which has the
net effect of leaking a struct ser_cardstate at every call of this
driver's tty close() operation. So using container_of() has the
additional benefit of actually working.

Reported-by: Dmitry Vyukov <dvyukov@google.com>
Tested-by: Dmitry Vyukov <dvyukov@google.com>
Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
Acked-by: Tilman Schmidt <tilman@imap.cc>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-02-19 15:52:41 -05:00
..
accessibility
acpi Merge branches 'pm-core' and 'pm-domains' 2016-02-06 00:34:01 +01:00
amba
android
ata ahci: Intel DNV device IDs SATA 2016-02-10 11:35:55 -05:00
atm
auxdisplay
base regmap: mmio: Revert to v4.4 endianness handling 2016-02-08 10:20:06 -08:00
bcma GPIO bulk updates for the v4.5 kernel cycle: 2016-01-17 12:32:01 -08:00
block Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client 2016-01-24 12:34:13 -08:00
bluetooth Bluetooth: btmrvl: don't send data to firmware while processing suspend 2016-01-06 16:37:14 +01:00
bus vexpress fixes for v4.5 2016-02-01 12:27:18 -08:00
cdrom cdrom: don't open-code memdup_user() 2016-01-06 08:25:24 -05:00
char Fix a compile error on IPMI when ACPI is disabled. 2016-02-03 10:04:58 -08:00
clk ARM: DT updates for v4.5 2016-01-20 18:16:29 -08:00
clocksource Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-01-31 15:49:06 -08:00
connector connector: bump skb->users before callback invocation 2016-01-04 21:46:45 -05:00
cpufreq Merge branches 'pm-cpuidle', 'pm-cpufreq', 'pm-domains' and 'pm-sleep' 2016-01-29 21:45:17 +01:00
cpuidle Merge branches 'pm-cpuidle', 'pm-cpufreq', 'pm-domains' and 'pm-sleep' 2016-01-29 21:45:17 +01:00
crypto crypto: marvell/cesa - fix test in mv_cesa_dev_dma_init() 2016-02-06 15:23:56 +08:00
dca
devfreq PM / devfreq: Do not show statistics if it's not ready. 2016-01-13 17:30:33 +09:00
dio
dma dmaengine fixes for 4.5-rc1 2016-01-20 10:15:21 -08:00
dma-buf
edac
eisa
extcon
firewire
firmware UBSAN: run-time undefined behavior sanity checker 2016-01-20 17:09:18 -08:00
fmc
fpga
gpio gpio: davinci: Fix the number of controllers allocated 2016-02-10 11:00:49 +01:00
gpu Merge branch 'drm-fixes-mst' of git://people.freedesktop.org/~airlied/linux into drm-fixes 2016-02-05 15:24:17 +10:00
hid asm-generic changes for 4.5 2016-01-20 17:30:20 -08:00
hsi HSI: omap_ssi_port: fix handling of_get_named_gpio result 2016-01-07 16:07:54 +01:00
hv char/misc patches for 4.5-rc1 2016-01-13 10:23:36 -08:00
hwmon hwmon: (fam15h_power) Add bit masking for tdp_limit 2016-01-27 18:48:46 -08:00
hwspinlock drivers/hwspinlock: fix race between radix tree insertion and lookup 2016-02-03 08:28:43 -08:00
hwtracing
i2c i2c: piix4: don't regress on bus names 2016-01-29 11:13:52 +01:00
ide drivers/ide: make ide-scan-pci.c driver explicitly non-modular 2016-01-18 14:12:33 -05:00
idle
iio Second set of IIO fixes for the 4.5 cycle. These ones are mostly 2016-02-01 13:08:26 -08:00
infiniband net/mlx4_core: Set UAR page size to 4KB regardless of system page size 2016-02-17 10:29:27 -05:00
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2016-02-10 12:21:57 -08:00
iommu iommu/amd: Correct the wrong setting of alias DTE in do_attach 2016-01-29 12:30:47 +01:00
ipack
irqchip Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-01-31 14:48:58 -08:00
isdn ser_gigaset: use container_of() instead of detour 2016-02-19 15:52:41 -05:00
leds GPIO bulk updates for the v4.5 kernel cycle: 2016-01-17 12:32:01 -08:00
lguest lguest: Map switcher text R/O 2016-01-12 12:17:28 +01:00
lightnvm lightnvm: introduce factory reset 2016-01-12 08:21:18 -07:00
macintosh
mailbox mailbox: Fix dependencies for !HAS_IOMEM archs 2016-02-02 16:47:14 +05:30
mcb
md Merge branch 'mymd/for-next' into mymd/for-linus 2016-02-03 15:43:59 -08:00
media [media] saa7134-alsa: Only frees registered sound cards 2016-02-04 16:26:10 -02:00
memory ARM: SoC driver updates for v4.5 2016-01-20 18:42:30 -08:00
memstick memstick: use sector_div instead of do_div 2016-01-20 17:09:18 -08:00
message
mfd GPIO bulk updates for the v4.5 kernel cycle: 2016-01-17 12:32:01 -08:00
misc Merge branch 'akpm' (patches from Andrew) 2016-01-21 12:32:08 -08:00
mmc MMC core: 2016-01-22 12:04:21 -08:00
mtd Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2016-01-24 12:50:56 -08:00
net rtlwifi 2016-02-19 15:51:18 -05:00
nfc
ntb NTB: Fix macro parameter conflict with field name 2016-01-21 19:53:10 -05:00
nubus
nvdimm libnvdimm, pfn: fix restoring memmap location 2016-01-29 17:43:16 -08:00
nvme Merge branch 'for-4.5/nvme' of git://git.kernel.dk/linux-block 2016-01-21 19:58:02 -08:00
nvmem
of of: of_mdio: Add marvell, 88e1145 to whitelist of PHY compatibilities. 2016-02-09 05:21:55 -05:00
oprofile wrappers for ->i_mutex access 2016-01-22 18:04:28 -05:00
parisc parisc: convert to dma_map_ops 2016-01-20 17:09:18 -08:00
parport
pci Merge branches 'acpi-video' and 'acpi-hotplug' 2016-01-29 21:44:53 +01:00
pcmcia
perf
phy
pinctrl GPIO bulk updates for the v4.5 kernel cycle: 2016-01-17 12:32:01 -08:00
platform intel_scu_ipcutil: underflow in scu_reg_access() 2016-01-30 09:40:35 -08:00
pnp PNP: Add Haswell-ULT to Intel MCH size workaround 2016-02-03 01:00:29 +01:00
power power: bq27xxx_battery: Fix bq27541 AveragePower register address 2016-01-14 01:03:18 +01:00
powercap Merge branch 'powercap' 2016-01-12 01:12:40 +01:00
pps
ps3
ptp ptp: ixp46x: use helpers for converting ns to timespec 2016-01-29 12:38:59 -08:00
pwm pwm: Mark all devices as "might sleep" 2016-01-21 15:04:59 +01:00
rapidio rapidio: use kobj_to_dev() 2016-01-20 17:09:18 -08:00
ras
regulator regulator: Update for v4.5 2016-01-15 12:14:47 -08:00
remoteproc virtio: make find_vqs() checkpatch.pl-friendly 2016-01-12 20:47:06 +02:00
reset
rpmsg virtio: make find_vqs() checkpatch.pl-friendly 2016-01-12 20:47:06 +02:00
rtc RTC for 4.5 2016-01-18 12:10:45 -08:00
s390 s390/cio: update measurement characteristics 2016-01-26 12:47:51 +01:00
sbus
scsi drivers/scsi/sg.c: mark VMA as VM_IO to prevent migration 2016-02-03 08:28:43 -08:00
sfi
sh
sn
soc ARM: SoC support for Tegra platforms for v4.5 2016-01-22 17:30:52 -08:00
spi powerpc updates for 4.5 2016-01-15 13:18:47 -08:00
spmi
ssb ssb: mark ssb_bus_register as __maybe_unused 2016-01-19 21:25:57 +02:00
staging Staging / IIO driver fixes for 4.5-rc3 2016-02-06 22:13:16 -08:00
target Merge branch 'for-4.5/nvme' of git://git.kernel.dk/linux-block 2016-01-21 19:58:02 -08:00
tc
thermal Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux 2016-01-24 12:43:06 -08:00
thunderbolt
tty TTY/Serial fixes for 4.5-rc2 2016-01-31 17:09:39 -08:00
uio
usb xhci: harden xhci_find_next_ext_cap against device removal 2016-02-04 17:00:10 -08:00
uwb
vfio vfio/noiommu: Don't use iommu_present() to track fake groups 2016-01-27 11:22:25 -07:00
vhost
video wrappers for ->i_mutex access 2016-01-22 18:04:28 -05:00
virt
virtio virtio_pci: fix use after free on release 2016-01-26 10:18:28 +02:00
vlynq
vme
w1
watchdog watchdog: Fix dependencies for !HAS_IOMEM archs 2016-01-31 16:54:36 +01:00
xen Merge branch 'stable/for-linus-4.5' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/mm 2016-01-29 15:13:48 -08:00
zorro
Kconfig
Makefile