linux-stable/drivers/macintosh
Linus Torvalds 77e02cf57b memblock: introduce saner 'memblock_free_ptr()' interface
The boot-time allocation interface for memblock is a mess, with
'memblock_alloc()' returning a virtual pointer, but then you are
supposed to free it with 'memblock_free()' that takes a _physical_
address.

Not only is that all kinds of strange and illogical, but it actually
causes bugs, when people then use it like a normal allocation function,
and it fails spectacularly on a NULL pointer:

   https://lore.kernel.org/all/20210912140820.GD25450@xsang-OptiPlex-9020/

or just random memory corruption if the debug checks don't catch it:

   https://lore.kernel.org/all/61ab2d0c-3313-aaab-514c-e15b7aa054a0@suse.cz/

I really don't want to apply patches that treat the symptoms, when the
fundamental cause is this horribly confusing interface.

I started out looking at just automating a sane replacement sequence,
but because of this mix or virtual and physical addresses, and because
people have used the "__pa()" macro that can take either a regular
kernel pointer, or just the raw "unsigned long" address, it's all quite
messy.

So this just introduces a new saner interface for freeing a virtual
address that was allocated using 'memblock_alloc()', and that was kept
as a regular kernel pointer.  And then it converts a couple of users
that are obvious and easy to test, including the 'xbc_nodes' case in
lib/bootconfig.c that caused problems.

Reported-by: kernel test robot <oliver.sang@intel.com>
Fixes: 40caa127f3 ("init: bootconfig: Remove all bootconfig data when the init memory is removed")
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2021-09-14 13:23:22 -07:00
..
ams macintosh/ams-input: switch to using input device polling mode 2020-05-28 23:24:32 +10:00
Kconfig treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
Makefile macintosh/via-pmu: Replace via-pmu68k driver with via-pmu driver 2018-07-31 19:56:42 +10:00
adb-iop.c macintosh/adb-iop: Use big-endian autopoll mask 2021-01-25 13:23:38 +01:00
adb.c macintosh/adb: Replace HTTP links with HTTPS ones 2020-07-22 00:01:23 +10:00
adbhid.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
ans-lcd.c misc: cleanup minor number definitions in c file into miscdevice.h 2020-03-18 12:27:03 +01:00
ans-lcd.h misc: cleanup minor number definitions in c file into miscdevice.h 2020-03-18 12:27:03 +01:00
apm_emu.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 118 2019-05-24 17:39:02 +02:00
mac_hid.c sysctl: pass kernel pointers to ->proc_handler 2020-04-27 02:07:40 -04:00
macio-adb.c isystem: trim/fixup stdarg.h and other headers 2021-08-19 09:02:55 +09:00
macio_asic.c bus: Make remove callback return void 2021-07-21 11:53:42 +02:00
macio_sysfs.c macintosh: Use device_type helpers to access the node type 2018-11-26 22:33:37 +11:00
mediabay.c mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
rack-meter.c rackmeter: Use vtime aware kcpustat accessor 2019-11-21 07:59:00 +01:00
smu.c memblock: introduce saner 'memblock_free_ptr()' interface 2021-09-14 13:23:22 -07:00
therm_adt746x.c macintosh/therm_adt746x: Replace HTTP links with HTTPS ones 2020-07-22 00:01:24 +10:00
therm_windtunnel.c macintosh: convert to i2c_new_scanned_device 2020-03-26 12:36:20 +01:00
via-cuda.c isystem: ship and use stdarg.h 2021-08-19 09:02:55 +09:00
via-macii.c isystem: trim/fixup stdarg.h and other headers 2021-08-19 09:02:55 +09:00
via-pmu-backlight.c
via-pmu-event.c
via-pmu-event.h
via-pmu-led.c
via-pmu.c isystem: ship and use stdarg.h 2021-08-19 09:02:55 +09:00
windfarm.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 246 2019-06-19 17:09:08 +02:00
windfarm_ad7417_sensor.c macintosh: windfarm: fix MODINFO regression 2020-03-10 12:30:59 +01:00
windfarm_core.c windfarm: make symbol 'wf_thread' static 2021-04-14 23:04:13 +10:00
windfarm_cpufreq_clamp.c cpufreq: Use per-policy frequency QoS 2019-10-21 02:05:21 +02:00
windfarm_fcu_controls.c macintosh: windfarm: fix MODINFO regression 2020-03-10 12:30:59 +01:00
windfarm_lm75_sensor.c macintosh: windfarm: remove detatch debug containing spelling mistakes 2020-09-02 11:00:17 +10:00
windfarm_lm87_sensor.c macintosh: windfarm: remove detatch debug containing spelling mistakes 2020-09-02 11:00:17 +10:00
windfarm_max6690_sensor.c macintosh: windfarm: fix MODINFO regression 2020-03-10 12:30:59 +01:00
windfarm_mpu.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 246 2019-06-19 17:09:08 +02:00
windfarm_pid.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 246 2019-06-19 17:09:08 +02:00
windfarm_pid.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 246 2019-06-19 17:09:08 +02:00
windfarm_pm72.c macintosh: Use pr_warn instead of pr_warning 2019-10-18 15:00:22 +02:00
windfarm_pm81.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 246 2019-06-19 17:09:08 +02:00
windfarm_pm91.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 246 2019-06-19 17:09:08 +02:00
windfarm_pm112.c drivers/macintosh: Fix memleak in windfarm_pm112 driver 2020-05-15 11:58:56 +10:00
windfarm_pm121.c macintosh/windfarm: Make symbol 'pm121_sys_state' static 2021-04-14 23:04:13 +10:00
windfarm_rm31.c macintosh: Use pr_warn instead of pr_warning 2019-10-18 15:00:22 +02:00
windfarm_smu_controls.c powerpc: Spelling/typo fixes 2021-04-08 21:17:42 +10:00
windfarm_smu_sat.c macintosh: windfarm: use for_each_child_of_node() macro 2020-09-15 22:13:39 +10:00
windfarm_smu_sensors.c macintosh: smu_sensors: use for_each_child_of_node() macro 2020-09-18 19:59:44 +10:00