]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
HID: change return type of report_fixup() to const
authorThomas Weißschuh <linux@weissschuh.net>
Sat, 3 Aug 2024 12:34:22 +0000 (14:34 +0200)
committerBenjamin Tissoires <bentiss@kernel.org>
Tue, 27 Aug 2024 14:29:55 +0000 (16:29 +0200)
By allowing the drivers to return a "const *" they can constify their
static report arrays.
This makes it clear to driver authors that the HID core will not modify
those reports and they can be reused for multiple devices.
Furthermore security is slightly improved as those reports are protected
against accidental or malicious modifications.

[bentiss: fixup hid-cougar.c and hid-multitouch.c for latest version of
the master branch]

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Link: https://patch.msgid.link/20240803-hid-const-fixup-v2-6-f53d7a7b29d8@weissschuh.net
Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
51 files changed:
drivers/hid/hid-apple.c
drivers/hid/hid-asus.c
drivers/hid/hid-aureal.c
drivers/hid/hid-bigbenff.c
drivers/hid/hid-cherry.c
drivers/hid/hid-chicony.c
drivers/hid/hid-cmedia.c
drivers/hid/hid-corsair.c
drivers/hid/hid-cougar.c
drivers/hid/hid-cypress.c
drivers/hid/hid-dr.c
drivers/hid/hid-elecom.c
drivers/hid/hid-gembird.c
drivers/hid/hid-glorious.c
drivers/hid/hid-holtek-kbd.c
drivers/hid/hid-holtek-mouse.c
drivers/hid/hid-ite.c
drivers/hid/hid-keytouch.c
drivers/hid/hid-kye.c
drivers/hid/hid-lenovo.c
drivers/hid/hid-lg.c
drivers/hid/hid-logitech-hidpp.c
drivers/hid/hid-macally.c
drivers/hid/hid-magicmouse.c
drivers/hid/hid-maltron.c
drivers/hid/hid-microsoft.c
drivers/hid/hid-monterey.c
drivers/hid/hid-multitouch.c
drivers/hid/hid-nti.c
drivers/hid/hid-ortek.c
drivers/hid/hid-petalynx.c
drivers/hid/hid-prodikeys.c
drivers/hid/hid-pxrc.c
drivers/hid/hid-redragon.c
drivers/hid/hid-saitek.c
drivers/hid/hid-samsung.c
drivers/hid/hid-semitek.c
drivers/hid/hid-sensor-hub.c
drivers/hid/hid-sigmamicro.c
drivers/hid/hid-sony.c
drivers/hid/hid-steelseries.c
drivers/hid/hid-sunplus.c
drivers/hid/hid-topre.c
drivers/hid/hid-uclogic-core.c
drivers/hid/hid-viewsonic.c
drivers/hid/hid-vrc2.c
drivers/hid/hid-waltop.c
drivers/hid/hid-winwing.c
drivers/hid/hid-xiaomi.c
drivers/hid/hid-zydacron.c
include/linux/hid.h

index af5cf94f9dea3a263c5cf6e6e4cc7661b6c95660..7e1ae2a2bcc24740ba33a3bdf379ed642b836939 100644 (file)
@@ -620,7 +620,7 @@ static void apple_battery_timer_tick(struct timer_list *t)
  * MacBook JIS keyboard has wrong logical maximum
  * Magic Keyboard JIS has wrong logical maximum
  */
-static __u8 *apple_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *apple_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        struct apple_sc *asc = hid_get_drvdata(hdev);
index a282388b7aa5c1df7d05e53f5712cfb5f6ef6958..28a958bc472325794b7768f1a2c98b826d990c12 100644 (file)
@@ -1119,7 +1119,7 @@ static const __u8 asus_g752_fixed_rdesc[] = {
         0x2A, 0xFF, 0x00,              /*   Usage Maximum (0xFF)       */
 };
 
-static __u8 *asus_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *asus_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        struct asus_drvdata *drvdata = hid_get_drvdata(hdev);
index cf1a562d8523a1428d78f1416b2377e6f700d0e2..896304148a870800f203417266a12753e4faeba3 100644 (file)
@@ -18,7 +18,7 @@
 
 #include "hid-ids.h"
 
-static __u8 *aureal_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *aureal_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        if (*rsize >= 54 && rdesc[52] == 0x25 && rdesc[53] == 0x01) {
index be17af3d9c0c27425eebac6f97ab0ca347b32537..a2ff60dd834c894cf96c7d871a8b34477a004ddc 100644 (file)
@@ -464,7 +464,7 @@ error_hw_stop:
        return error;
 }
 
-static __u8 *bigben_report_fixup(struct hid_device *hid, __u8 *rdesc,
+static const __u8 *bigben_report_fixup(struct hid_device *hid, __u8 *rdesc,
        unsigned int *rsize)
 {
        if (*rsize == PID0902_RDESC_ORIG_SIZE) {
index 549c73b05b8d67f497ba7b587970c50cbed2af0e..a504632febfcf14a8b686b673139f2dc0565fa18 100644 (file)
@@ -22,7 +22,7 @@
  * Cherry Cymotion keyboard have an invalid HID report descriptor,
  * that needs fixing before we can parse it.
  */
-static __u8 *ch_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *ch_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        if (*rsize >= 18 && rdesc[11] == 0x3c && rdesc[12] == 0x02) {
index 99954c6b3242d0f068040f7d05607465f599d066..5776ec2e7159a3c05af3f8b3137b6e2283312b8e 100644 (file)
@@ -88,8 +88,8 @@ static int ch_input_mapping(struct hid_device *hdev, struct hid_input *hi,
        return 1;
 }
 
-static __u8 *ch_switch12_report_fixup(struct hid_device *hdev, __u8 *rdesc,
-               unsigned int *rsize)
+static const __u8 *ch_switch12_report_fixup(struct hid_device *hdev,
+               __u8 *rdesc, unsigned int *rsize)
 {
        struct usb_interface *intf = to_usb_interface(hdev->dev.parent);
        
index cab42047bc99be0710bcca261045721a9a8119e2..01009c95613c66984b9c4ff6054cc5e329b8c1ab 100644 (file)
@@ -199,7 +199,7 @@ static struct hid_driver cmhid_driver = {
        .input_mapping = cmhid_input_mapping,
 };
 
-static __u8 *cmhid_hs100b_report_fixup(struct hid_device *hid, __u8 *rdesc,
+static const __u8 *cmhid_hs100b_report_fixup(struct hid_device *hid, __u8 *rdesc,
                                       unsigned int *rsize)
 {
        if (*rsize == HS100B_RDESC_ORIG_SIZE) {
index 702f50e9841de7c0ab30888a45cda381357aa865..62b99f5c3cf8478a1eb81a24cf1aaacabaf21cdf 100644 (file)
@@ -690,8 +690,8 @@ static int corsair_input_mapping(struct hid_device *dev,
  * - USB ID 1b1c:1b3e, sold as Scimitar RGB Pro Gaming mouse
  */
 
-static __u8 *corsair_mouse_report_fixup(struct hid_device *hdev, __u8 *rdesc,
-        unsigned int *rsize)
+static const __u8 *corsair_mouse_report_fixup(struct hid_device *hdev,
+       __u8 *rdesc, unsigned int *rsize)
 {
        struct usb_interface *intf = to_usb_interface(hdev->dev.parent);
 
index 0fa785f52707ac22a7e39a22f5a9e643ec734465..5596dd94032230fcb7573281657e5283196d0343 100644 (file)
@@ -103,8 +103,8 @@ static void cougar_fix_g6_mapping(void)
 /*
  * Constant-friendly rdesc fixup for mouse interface
  */
-static __u8 *cougar_report_fixup(struct hid_device *hdev, __u8 *rdesc,
-                                unsigned int *rsize)
+static const __u8 *cougar_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+                                      unsigned int *rsize)
 {
        if (*rsize >= 117 && rdesc[2] == 0x09 && rdesc[3] == 0x02 &&
            (rdesc[115] | rdesc[116] << 8) >= HID_MAX_USAGES) {
index b952b235e70ab269c556b03029ff77ef841efb32..98548201feec072b4fc16080f97abbc81edbe1ae 100644 (file)
@@ -67,7 +67,7 @@ static __u8 *va_logical_boundary_fixup(struct hid_device *hdev, __u8 *rdesc,
        return rdesc;
 }
 
-static __u8 *cp_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *cp_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        unsigned long quirks = (unsigned long)hid_get_drvdata(hdev);
index c88224a96e9e0644826d9af293e8d9decbd1be5d..b24f9bc743e194eb2053b0b35a6b7d3405934bab 100644 (file)
@@ -228,8 +228,8 @@ static __u8 pid0011_rdesc_fixed[] = {
        0xC0                /*  End Collection                  */
 };
 
-static __u8 *dr_report_fixup(struct hid_device *hdev, __u8 *rdesc,
-                               unsigned int *rsize)
+static const __u8 *dr_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+                                  unsigned int *rsize)
 {
        switch (hdev->product) {
        case 0x0011:
index 5973a3bab29f89bc2236cbbd31a7ade62f481590..defcf91fdd14b3334525e793f10260df21ea7703 100644 (file)
@@ -53,7 +53,7 @@ static void mouse_button_fixup(struct hid_device *hdev,
        rdesc[padding_bit + 1] = MOUSE_BUTTONS_MAX - nbuttons;
 }
 
-static __u8 *elecom_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *elecom_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        switch (hdev->product) {
index c42593fe71166c7c2151133c53e9337b9ec61fd4..20a8de766e5609e897f420fca18a654087350827 100644 (file)
@@ -57,7 +57,7 @@ static const __u8 gembird_jpd_fixed_rdesc[] = {
        0x81, 0x02,                     /*   Input (Data,Var,Abs)       */
 };
 
-static __u8 *gembird_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *gembird_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        __u8 *new_rdesc;
index 281b3a7187cec2ff355aae17a4cec2b59d2102ca..5bbd8124805322636df5fb9455952cf2fbbcccda 100644 (file)
@@ -26,7 +26,7 @@ MODULE_DESCRIPTION("HID driver for Glorious PC Gaming Race mice");
  * keyboard HID report, causing keycodes to be misinterpreted.
  * Fix this by setting Usage Minimum to 0 in that report.
  */
-static __u8 *glorious_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *glorious_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        if (*rsize == 213 &&
index 1f014ac54e14d3ceee5ccf2dd498f878db7a97bb..794d609c2e313a735fb5d17cb29adc367e246142 100644 (file)
@@ -102,7 +102,7 @@ static __u8 holtek_kbd_rdesc_fixed[] = {
        0xC0,               /*  End Collection                                */
 };
 
-static __u8 *holtek_kbd_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *holtek_kbd_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        struct usb_interface *intf = to_usb_interface(hdev->dev.parent);
index 343730c28e2d2e972b275314f950895f77ebfe56..b618a1646c13e979e8bbab88c466026b00c4331c 100644 (file)
@@ -29,8 +29,8 @@
  * - USB ID 04d9:a0c2, sold as ETEKCITY Scroll T-140 Gaming Mouse
  */
 
-static __u8 *holtek_mouse_report_fixup(struct hid_device *hdev, __u8 *rdesc,
-               unsigned int *rsize)
+static const __u8 *holtek_mouse_report_fixup(struct hid_device *hdev,
+               __u8 *rdesc, unsigned int *rsize)
 {
        struct usb_interface *intf = to_usb_interface(hdev->dev.parent);
 
index 6a7281bc27c95a537e8eae466dc2fbc13e7c28e5..8e42780a2663c228a367e5c5c255af8b0386f3ec 100644 (file)
@@ -13,7 +13,7 @@
 
 #define QUIRK_TOUCHPAD_ON_OFF_REPORT           BIT(0)
 
-static __u8 *ite_report_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned int *rsize)
+static const __u8 *ite_report_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned int *rsize)
 {
        unsigned long quirks = (unsigned long)hid_get_drvdata(hdev);
 
index a972943baaea0489054cee439d169ad2c07e8754..6e3033bb80dddc888cfe7de971bcde187af4af4d 100644 (file)
@@ -24,7 +24,7 @@ static __u8 keytouch_fixed_rdesc[] = {
 0x26, 0xff, 0x00, 0x05, 0x07, 0x19, 0x00, 0x2a, 0xff, 0x00, 0x81, 0x00, 0xc0
 };
 
-static __u8 *keytouch_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *keytouch_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        hid_info(hdev, "fixing up Keytouch IEC report descriptor\n");
index ca2ba3da2458b60673ae9bd9c553e6365fbc60d9..32344331282f928d3b092d1a973c60b216d7a2e1 100644 (file)
@@ -466,7 +466,7 @@ static __u8 *kye_tablet_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned int
        return rdesc;
 }
 
-static __u8 *kye_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *kye_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        switch (hdev->product) {
index e5e72aa5260a9172abccd95d7b7bd4c97cae16ac..3b0c779ce8f712c85177b9c85e37e9c16b064a18 100644 (file)
@@ -133,7 +133,7 @@ static const __u8 lenovo_tpIIbtkbd_need_fixup_collection[] = {
        0x81, 0x01,             /*   Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) */
 };
 
-static __u8 *lenovo_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *lenovo_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        switch (hdev->product) {
index cfe2f4f6e93f095d27891e009cc6651b354fa5f6..a9be918e2b5c49f309ddf89fe7481b228098a6c4 100644 (file)
@@ -427,7 +427,7 @@ static __u8 fg_rdesc_fixed[] = {
  * above the logical maximum described in descriptor. This extends
  * the original value of 0x28c of logical maximum to 0x104d
  */
-static __u8 *lg_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *lg_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        struct lg_drv_data *drv_data = hid_get_drvdata(hdev);
index 400d70e6dbe2dde52230a03cab14a6fe7a92bf34..0e33fa0eb8db6d0e351fa98538de6c1b726d1744 100644 (file)
@@ -3767,8 +3767,8 @@ static int hidpp_initialize_hires_scroll(struct hidpp_device *hidpp)
 /* Generic HID++ devices                                                      */
 /* -------------------------------------------------------------------------- */
 
-static u8 *hidpp_report_fixup(struct hid_device *hdev, u8 *rdesc,
-                             unsigned int *rsize)
+static const u8 *hidpp_report_fixup(struct hid_device *hdev, u8 *rdesc,
+                                   unsigned int *rsize)
 {
        struct hidpp_device *hidpp = hid_get_drvdata(hdev);
 
index aea46e5220082acae14b78097bb27d4a13b84f65..fe7576458afab83818056805b4cbd1e216735c86 100644 (file)
@@ -18,8 +18,8 @@ MODULE_LICENSE("GPL");
  * The Macally ikey keyboard says that its logical and usage maximums are both
  * 101, but the power key is 102 and the equals key is 103
  */
-static __u8 *macally_report_fixup(struct hid_device *hdev, __u8 *rdesc,
-                                unsigned int *rsize)
+static const __u8 *macally_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+                                       unsigned int *rsize)
 {
        if (*rsize >= 60 && rdesc[53] == 0x65 && rdesc[59] == 0x65) {
                hid_info(hdev,
index 2eb285b97fc01167c28c27f0ffb08cc321815047..8a73b59e0827b9b792a633d25193440cbc36aff0 100644 (file)
@@ -907,8 +907,8 @@ static void magicmouse_remove(struct hid_device *hdev)
        hid_hw_stop(hdev);
 }
 
-static __u8 *magicmouse_report_fixup(struct hid_device *hdev, __u8 *rdesc,
-                                    unsigned int *rsize)
+static const __u8 *magicmouse_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+                                          unsigned int *rsize)
 {
        /*
         * Change the usage from:
index caba0def938c34cc20d3a4d21ef7a783c3339cd9..374c64dd82c2ceb2f8d31d614101521f275eff1c 100644 (file)
@@ -137,8 +137,8 @@ static u8 maltron_rdesc[] = {
        0xC0               /* End Collection                     */
 };
 
-static __u8 *maltron_report_fixup(struct hid_device *hdev, __u8 *rdesc,
-                                 unsigned int *rsize)
+static const __u8 *maltron_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+                                       unsigned int *rsize)
 {
        if (*rsize == sizeof(maltron_rdesc_o) &&
            !memcmp(maltron_rdesc_o, rdesc, sizeof(maltron_rdesc_o))) {
index 4cf0fcddb379ec3bb847bd355226e3d1b67a15bf..18ac21c0bcb2572764d515b30f81630b91c557ba 100644 (file)
@@ -56,7 +56,7 @@ struct xb1s_ff_report {
        __u8    loop_count;
 } __packed;
 
-static __u8 *ms_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *ms_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        struct ms_data *ms = hid_get_drvdata(hdev);
index 989681f73d775463dff6b530c7ad1ebfdf2d341d..3089be990afefaa985804b6bfb0aac39c21b1491 100644 (file)
@@ -18,7 +18,7 @@
 
 #include "hid-ids.h"
 
-static __u8 *mr_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *mr_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        if (*rsize >= 31 && rdesc[29] == 0x05 && rdesc[30] == 0x09) {
index 99812c0f830b5e432a4f443c09726680e63e39bb..5d4e916166c1a3813801ad9bd2b295ad758a0397 100644 (file)
@@ -1441,7 +1441,7 @@ static int mt_event(struct hid_device *hid, struct hid_field *field,
        return 0;
 }
 
-static __u8 *mt_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *mt_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                             unsigned int *size)
 {
        if (hdev->vendor == I2C_VENDOR_ID_GOODIX &&
index 1952e9ca5f45b57101275d7aaaceac3f3f2ef18d..03f7dd491228cffa637b248ff410788ea6b20e4c 100644 (file)
@@ -29,7 +29,7 @@ MODULE_DESCRIPTION("HID driver for Network Technologies USB-SUN keyboard adapter
 /*
  * NTI Sun keyboard adapter has wrong logical maximum in report descriptor
  */
-static __u8 *nti_usbsun_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *nti_usbsun_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        if (*rsize >= 60 && rdesc[53] == 0x65 && rdesc[59] == 0x65) {
index 99e3b06a83314be18fad9409eb19ad4b9260540e..f27297269a7f401524981b12f86a385c047e795c 100644 (file)
@@ -22,7 +22,7 @@
 
 #include "hid-ids.h"
 
-static __u8 *ortek_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *ortek_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        if (*rsize >= 56 && rdesc[54] == 0x25 && rdesc[55] == 0x01) {
index 5e47634bb07d6ad9aea946f0e04ea30e136b8784..1a986f077ce108db2e4e457b0f01542a7108b7ce 100644 (file)
@@ -19,7 +19,7 @@
 #include "hid-ids.h"
 
 /* Petalynx Maxter Remote has maximum for consumer page set too low */
-static __u8 *pl_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *pl_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        if (*rsize >= 62 && rdesc[39] == 0x2a && rdesc[40] == 0xf5 &&
index 757361593e524f57932319fc62ae46feb18a4c7e..3d08c190a935b8f276bd0933341352e556259d82 100644 (file)
@@ -728,7 +728,7 @@ static int pcmidi_snd_terminate(struct pcmidi_snd *pm)
 /*
  * PC-MIDI report descriptor for report id is wrong.
  */
-static __u8 *pk_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *pk_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        if (*rsize == 178 &&
index b0e517f9cde7b48ab11bf3ebfcd97cca80e967d6..ef38730e78ab03e7b69c0ae6a41b36d3cf1e53c6 100644 (file)
@@ -42,8 +42,8 @@ static __u8 pxrc_rdesc_fixed[] = {
        0xC0,              // End Collection
 };
 
-static __u8 *pxrc_report_fixup(struct hid_device *hdev, __u8 *rdesc,
-                               unsigned int *rsize)
+static const __u8 *pxrc_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+                                    unsigned int *rsize)
 {
        hid_info(hdev, "fixing up PXRC report descriptor\n");
        *rsize = sizeof(pxrc_rdesc_fixed);
index 07d803513f27ce481568a61fe3e6293d05235b3e..20d28ed75c1e5d7cb8ae4cffecd850f0ab7e2e3a 100644 (file)
@@ -33,7 +33,7 @@
  * key codes are generated.
  */
 
-static __u8 *redragon_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *redragon_report_fixup(struct hid_device *hdev, __u8 *rdesc,
        unsigned int *rsize)
 {
        if (*rsize >= 102 && rdesc[100] == 0x81 && rdesc[101] == 0x00) {
index 85ac8def368fb9284c17e762e4fb4add013c115a..6fe7c087c594ea3a4e6610e04532aeba54198027 100644 (file)
@@ -66,7 +66,7 @@ static int saitek_probe(struct hid_device *hdev,
        return 0;
 }
 
-static __u8 *saitek_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *saitek_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        struct saitek_sc *ssc = hid_get_drvdata(hdev);
index d4e27142245c7ab8a8d32bd1d9bdb9ee92501b19..f3908a9e04e6721c02bf6a154a5f0f6d73eb8f5e 100644 (file)
@@ -469,7 +469,7 @@ static int samsung_universal_kbd_input_mapping(struct hid_device *hdev,
        return 1;
 }
 
-static __u8 *samsung_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *samsung_report_fixup(struct hid_device *hdev, __u8 *rdesc,
        unsigned int *rsize)
 {
        if (hdev->product == USB_DEVICE_ID_SAMSUNG_IR_REMOTE && hid_is_usb(hdev))
index 710766f6839d9c8842ace52b1a3540235d28bf59..4fbec5fd87ce2702c882c7e105a813c2173ff349 100644 (file)
@@ -11,8 +11,8 @@
 
 #include "hid-ids.h"
 
-static __u8 *semitek_report_fixup(struct hid_device *hdev, __u8 *rdesc,
-                                  unsigned int *rsize)
+static const __u8 *semitek_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+                                       unsigned int *rsize)
 {
        /* In the report descriptor for interface 2, fix the incorrect
           description of report ID 0x04 (the report contains a
index 26e93a331a51076ccc0a05abdb5b1ccf4540f983..7bd86eef6ec761241db00c18ba08651ba3f96581 100644 (file)
@@ -580,7 +580,7 @@ void sensor_hub_device_close(struct hid_sensor_hub_device *hsdev)
 }
 EXPORT_SYMBOL_GPL(sensor_hub_device_close);
 
-static __u8 *sensor_hub_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *sensor_hub_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        /*
index 2e7058ac0e9d580c7642d442d8b2269b3d0ea251..c87276d7ba0d69742c5eea5ec2e69c2b440f0fea 100644 (file)
@@ -99,8 +99,8 @@ static const __u8 sm_0059_rdesc[] = {
        0xc0,                    /* End Collection                      166 */
 };
 
-static __u8 *sm_report_fixup(struct hid_device *hdev, __u8 *rdesc,
-                            unsigned int *rsize)
+static const __u8 *sm_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+                                  unsigned int *rsize)
 {
        if (*rsize == sizeof(sm_0059_rdesc) &&
            !memcmp(sm_0059_rdesc, rdesc, *rsize)) {
index eac75f98f08ab8293e4195a529f72177ac82248c..8e2e914bd2360434c1791800ac734473a73c295d 100644 (file)
@@ -743,7 +743,7 @@ static int sixaxis_mapping(struct hid_device *hdev, struct hid_input *hi,
        return -1;
 }
 
-static u8 *sony_report_fixup(struct hid_device *hdev, u8 *rdesc,
+static const u8 *sony_report_fixup(struct hid_device *hdev, u8 *rdesc,
                unsigned int *rsize)
 {
        struct sony_sc *sc = hid_get_drvdata(hdev);
index 2154e14f55f11feed7bd4607a792ab9c9bf9de84..895da49e8ead0b4ab0813f81470d4002ebc3c5e1 100644 (file)
@@ -570,8 +570,8 @@ static void steelseries_remove(struct hid_device *hdev)
        hid_hw_stop(hdev);
 }
 
-static __u8 *steelseries_srws1_report_fixup(struct hid_device *hdev, __u8 *rdesc,
-               unsigned int *rsize)
+static const __u8 *steelseries_srws1_report_fixup(struct hid_device *hdev,
+               __u8 *rdesc, unsigned int *rsize)
 {
        if (hdev->vendor != USB_VENDOR_ID_STEELSERIES ||
            hdev->product != USB_DEVICE_ID_STEELSERIES_SRWS1)
index f32e60d4420f677fae73039d3658bfee26e37f63..64e4cff8ca1d16fda7b48e7cf02db9165a1d165a 100644 (file)
@@ -18,7 +18,7 @@
 
 #include "hid-ids.h"
 
-static __u8 *sp_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *sp_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        if (*rsize >= 112 && rdesc[104] == 0x26 && rdesc[105] == 0x80 &&
index d1d5ca310eadc0fd7b4d5a44c050efffe7b96e69..848361f6225df182fcb47c9ff83aa993f9b0fb0b 100644 (file)
@@ -21,8 +21,8 @@ MODULE_LICENSE("GPL");
  * events it's actually sending. It claims to send array events but is instead
  * sending variable events.
  */
-static __u8 *topre_report_fixup(struct hid_device *hdev, __u8 *rdesc,
-                                unsigned int *rsize)
+static const __u8 *topre_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+                                     unsigned int *rsize)
 {
        if (*rsize >= 119 && rdesc[69] == 0x29 && rdesc[70] == 0xe7 &&
                                                 rdesc[71] == 0x81 && rdesc[72] == 0x00) {
index b176f9c0dd52787bb2e1af6d0eb2a5b6fca78e8e..f6a1572b372830c837e42a71d41f83a2ab7be345 100644 (file)
@@ -50,7 +50,7 @@ static void uclogic_inrange_timeout(struct timer_list *t)
        input_sync(input);
 }
 
-static __u8 *uclogic_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *uclogic_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                                        unsigned int *rsize)
 {
        struct uclogic_drvdata *drvdata = hid_get_drvdata(hdev);
index 668c2adb77b67270abc8eeb39a8d7b839b704d94..86f41e3fcb95dd29a738467c87432aaa0e944da3 100644 (file)
@@ -70,8 +70,8 @@ static __u8 pd1011_rdesc_fixed[] = {
        0xC0                    /*  End Collection                      */
 };
 
-static __u8 *viewsonic_report_fixup(struct hid_device *hdev, __u8 *rdesc,
-                                   unsigned int *rsize)
+static const __u8 *viewsonic_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+                                         unsigned int *rsize)
 {
        switch (hdev->product) {
        case USB_DEVICE_ID_VIEWSONIC_PD1011:
index 80a2b7ef5e66a00752d480577938549c5fff90ac..9a4840b524ba102231724641b50f3d5055d066ed 100644 (file)
@@ -38,8 +38,8 @@ static __u8 vrc2_rdesc_fixed[] = {
        0xC0,              // End Collection
 };
 
-static __u8 *vrc2_report_fixup(struct hid_device *hdev, __u8 *rdesc,
-                               unsigned int *rsize)
+static const __u8 *vrc2_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+                                    unsigned int *rsize)
 {
        hid_info(hdev, "fixing up VRC-2 report descriptor\n");
        *rsize = sizeof(vrc2_rdesc_fixed);
index 1e590c61eef5325c167d92c4a50cadb93bcd7375..137a682ef5fbe5a7e3610c016a4011e607f1d5bb 100644 (file)
@@ -599,7 +599,7 @@ static __u8 sirius_battery_free_tablet_rdesc_fixed[] = {
        0xC0                /*  End Collection                      */
 };
 
-static __u8 *waltop_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *waltop_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        switch (hdev->product) {
index 10a5d87ccb96c9bab83c5d3f8a681b2ce0aa7243..86b64c0ced12ce303b117ace4291ed39fa56640a 100644 (file)
@@ -165,7 +165,7 @@ static __u8 original_rdesc_buttons[] = {
  * This module skips numbers 32-63, unused on some throttle grips.
  */
 
-static __u8 *winwing_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *winwing_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        int sig_length = sizeof(original_rdesc_buttons);
index a97a90afad3381c52c6ef1acbb79bacabe53c75e..035733fce2e1f30edb2fb414051bf355f8d7772d 100644 (file)
@@ -61,8 +61,8 @@ static __u8 mi_silent_mouse_rdesc_fixed[] = {
        0xC0                /*  End Collection                      */
 };
 
-static __u8 *xiaomi_report_fixup(struct hid_device *hdev, __u8 *rdesc,
-                                unsigned int *rsize)
+static const __u8 *xiaomi_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+                                      unsigned int *rsize)
 {
        switch (hdev->product) {
        case USB_DEVICE_ID_MI_SILENT_MOUSE:
index 998a3db19c1f7b0c28953e0eb11e5ce6404d2706..3bdb26f4559257efb2144d44d7cb4351088cbc67 100644 (file)
@@ -24,7 +24,7 @@ struct zc_device {
 * Zydacron remote control has an invalid HID report descriptor,
 * that needs fixing before we can parse it.
 */
-static __u8 *zc_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+static const __u8 *zc_report_fixup(struct hid_device *hdev, __u8 *rdesc,
        unsigned int *rsize)
 {
        if (*rsize >= 253 &&
index c5fb43db0f2e6440f1f192062ade0a56f1150427..3a998fa3812de86bfce9b69764c3850a8c69e82b 100644 (file)
@@ -822,7 +822,7 @@ struct hid_driver {
                        struct hid_usage *usage, __s32 value);
        void (*report)(struct hid_device *hdev, struct hid_report *report);
 
-       __u8 *(*report_fixup)(struct hid_device *hdev, __u8 *buf,
+       const __u8 *(*report_fixup)(struct hid_device *hdev, __u8 *buf,
                        unsigned int *size);
 
        int (*input_mapping)(struct hid_device *hdev,