[PATCH v1 0/2] firewire: Simplify storing pointers in device id struct
Uwe Kleine-König (The Capable Hub) <[email protected]> Sun, 19 Apr 2026 08:42:12 +0200
| Newsgroups | gmane.linux.sound,gmane.linux.kernel.firewire.devel |
|---|---|
| Message-ID | <[email protected]> |
Hello, <linux/mod_devicetable.h> contains several device_id structs for various device types. Most of them have one of: - kernel_ulong_t driver_data (sometimes called "driver_info", sometimes the type is plain unsigned long) - const void *data (sometimes called "driver_data" or "context", sometimes not const) A considerable amount of drivers for the first category uses the unsigned long variable to store a pointer. This involves casting both for assignment and usage. An additional complication exists for the CHERI hardware extension where sizeof(void *) > sizeof(unsigned long). So with that an unsigned long variable cannot be used to store a pointer. To address both issues this series replaces the unsigned long variable by an anonymous union containing both an unsigned long and a pointer. For all non-CHERI architectures this isn't an ABI change because all have sizeof(void *) == sizeof(unsigned long). The first patch changes the definition of struct ieee1394_device_id. The second drops some casts in sound drivers. (There are no other firewire drivers that could benefit.) I adapted all sound drivers in a single patch, tell me if I should split per driver. For merging I suggest to take the whole series via the ALSA tree in the next merge window, as there are no modified files that are specific to firewire only and the second patch depends on the first. Best regards Uwe Uwe Kleine-König (The Capable Hub) (2): firewire: Simplify storing pointers in device id struct ALSA: firewire: Make use of ieee1394's .driver_data_ptr include/linux/mod_devicetable.h | 5 ++++- sound/firewire/dice/dice.c | 34 ++++++++++++++++----------------- sound/firewire/fireface/ff.c | 12 ++++++------ sound/firewire/motu/motu.c | 6 +++--- sound/firewire/oxfw/oxfw.c | 4 ++-- 5 files changed, 32 insertions(+), 29 deletions(-) base-commit: 028ef9c96e96197026887c0f092424679298aae8 -- 2.47.3