From: Greg Kroah-Hartman Date: Tue, 17 Jun 2025 14:56:19 +0000 (+0200) Subject: 6.15-stable patches X-Git-Tag: v6.6.94~18 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=60aa459548c6700fe437a83e1ef67ad76468d25a;p=thirdparty%2Fkernel%2Fstable-queue.git 6.15-stable patches added patches: calipso-unlock-rcu-before-returning-eafnosupport.patch do_move_mount-split-the-checks-in-subtree-of-our-ns-and-entire-anon-cases.patch gfs2-don-t-clear-sb-s_fs_info-in-gfs2_sys_fs_add.patch net-usb-aqc111-debug-info-before-sanitation.patch overflow-introduce-__define_flex-for-having-no-initializer.patch regulator-dt-bindings-mt6357-drop-fixed-compatible-requirement.patch usb-misc-onboard_usb_dev-fix-build-warning-for-config_usb_onboard_dev_usb5744-n.patch --- diff --git a/queue-6.15/calipso-unlock-rcu-before-returning-eafnosupport.patch b/queue-6.15/calipso-unlock-rcu-before-returning-eafnosupport.patch new file mode 100644 index 0000000000..43dd7a065b --- /dev/null +++ b/queue-6.15/calipso-unlock-rcu-before-returning-eafnosupport.patch @@ -0,0 +1,41 @@ +From 3cae906e1a6184cdc9e4d260e4dbdf9a118d94ad Mon Sep 17 00:00:00 2001 +From: Eric Dumazet +Date: Wed, 4 Jun 2025 13:38:26 +0000 +Subject: calipso: unlock rcu before returning -EAFNOSUPPORT + +From: Eric Dumazet + +commit 3cae906e1a6184cdc9e4d260e4dbdf9a118d94ad upstream. + +syzbot reported that a recent patch forgot to unlock rcu +in the error path. + +Adopt the convention that netlbl_conn_setattr() is already using. + +Fixes: 6e9f2df1c550 ("calipso: Don't call calipso functions for AF_INET sk.") +Reported-by: syzbot +Signed-off-by: Eric Dumazet +Cc: Kuniyuki Iwashima +Acked-by: Paul Moore +Link: https://patch.msgid.link/20250604133826.1667664-1-edumazet@google.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + net/netlabel/netlabel_kapi.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +--- a/net/netlabel/netlabel_kapi.c ++++ b/net/netlabel/netlabel_kapi.c +@@ -1165,8 +1165,10 @@ int netlbl_conn_setattr(struct sock *sk, + break; + #if IS_ENABLED(CONFIG_IPV6) + case AF_INET6: +- if (sk->sk_family != AF_INET6) +- return -EAFNOSUPPORT; ++ if (sk->sk_family != AF_INET6) { ++ ret_val = -EAFNOSUPPORT; ++ goto conn_setattr_return; ++ } + + addr6 = (struct sockaddr_in6 *)addr; + entry = netlbl_domhsh_getentry_af6(secattr->domain, diff --git a/queue-6.15/do_move_mount-split-the-checks-in-subtree-of-our-ns-and-entire-anon-cases.patch b/queue-6.15/do_move_mount-split-the-checks-in-subtree-of-our-ns-and-entire-anon-cases.patch new file mode 100644 index 0000000000..336090455b --- /dev/null +++ b/queue-6.15/do_move_mount-split-the-checks-in-subtree-of-our-ns-and-entire-anon-cases.patch @@ -0,0 +1,98 @@ +From 290da20e333955637f00647d9fff7c6e3c0b61e0 Mon Sep 17 00:00:00 2001 +From: Al Viro +Date: Fri, 6 Jun 2025 18:31:03 -0400 +Subject: do_move_mount(): split the checks in subtree-of-our-ns and entire-anon cases + +From: Al Viro + +commit 290da20e333955637f00647d9fff7c6e3c0b61e0 upstream. + +... and fix the breakage in anon-to-anon case. There are two cases +acceptable for do_move_mount() and mixing checks for those is making +things hard to follow. + +One case is move of a subtree in caller's namespace. + * source and destination must be in caller's namespace + * source must be detachable from parent +Another is moving the entire anon namespace elsewhere + * source must be the root of anon namespace + * target must either in caller's namespace or in a suitable + anon namespace (see may_use_mount() for details). + * target must not be in the same namespace as source. + +It's really easier to follow if tests are *not* mixed together... + +Reviewed-by: Christian Brauner +Fixes: 3b5260d12b1f ("Don't propagate mounts into detached trees") +Reported-by: Allison Karlitskaya +Signed-off-by: Al Viro +Signed-off-by: Greg Kroah-Hartman +--- + fs/namespace.c | 46 +++++++++++++++++++++++++--------------------- + 1 file changed, 25 insertions(+), 21 deletions(-) + +--- a/fs/namespace.c ++++ b/fs/namespace.c +@@ -3662,37 +3662,41 @@ static int do_move_mount(struct path *ol + ns = old->mnt_ns; + + err = -EINVAL; +- if (!may_use_mount(p)) +- goto out; +- + /* The thing moved must be mounted... */ + if (!is_mounted(&old->mnt)) + goto out; + +- /* ... and either ours or the root of anon namespace */ +- if (!(attached ? check_mnt(old) : is_anon_ns(ns))) +- goto out; +- +- if (is_anon_ns(ns) && ns == p->mnt_ns) { ++ if (check_mnt(old)) { ++ /* if the source is in our namespace... */ ++ /* ... it should be detachable from parent */ ++ if (!mnt_has_parent(old) || IS_MNT_LOCKED(old)) ++ goto out; ++ /* ... and the target should be in our namespace */ ++ if (!check_mnt(p)) ++ goto out; ++ } else { + /* +- * Ending up with two files referring to the root of the +- * same anonymous mount namespace would cause an error +- * as this would mean trying to move the same mount +- * twice into the mount tree which would be rejected +- * later. But be explicit about it right here. ++ * otherwise the source must be the root of some anon namespace. ++ * AV: check for mount being root of an anon namespace is worth ++ * an inlined predicate... + */ +- goto out; +- } else if (is_anon_ns(p->mnt_ns)) { ++ if (!is_anon_ns(ns) || mnt_has_parent(old)) ++ goto out; + /* +- * Don't allow moving an attached mount tree to an +- * anonymous mount tree. ++ * Bail out early if the target is within the same namespace - ++ * subsequent checks would've rejected that, but they lose ++ * some corner cases if we check it early. + */ +- goto out; ++ if (ns == p->mnt_ns) ++ goto out; ++ /* ++ * Target should be either in our namespace or in an acceptable ++ * anon namespace, sensu check_anonymous_mnt(). ++ */ ++ if (!may_use_mount(p)) ++ goto out; + } + +- if (old->mnt.mnt_flags & MNT_LOCKED) +- goto out; +- + if (!path_mounted(old_path)) + goto out; + diff --git a/queue-6.15/gfs2-don-t-clear-sb-s_fs_info-in-gfs2_sys_fs_add.patch b/queue-6.15/gfs2-don-t-clear-sb-s_fs_info-in-gfs2_sys_fs_add.patch new file mode 100644 index 0000000000..6bf9c08c5d --- /dev/null +++ b/queue-6.15/gfs2-don-t-clear-sb-s_fs_info-in-gfs2_sys_fs_add.patch @@ -0,0 +1,65 @@ +From 9126d2754c5e5d1818765811a10af0a14cf1fa0a Mon Sep 17 00:00:00 2001 +From: Andrew Price +Date: Wed, 28 May 2025 16:02:37 +0100 +Subject: gfs2: Don't clear sb->s_fs_info in gfs2_sys_fs_add + +From: Andrew Price + +commit 9126d2754c5e5d1818765811a10af0a14cf1fa0a upstream. + +When gfs2_sys_fs_add() fails, it sets sb->s_fs_info to NULL on its error +path (see commit 0d515210b696 ("GFS2: Add kobject release method")). +The intention seems to be to prevent dereferencing sb->s_fs_info once +the object pointed to has been deallocated, but that would be better +achieved by setting the pointer to NULL in free_sbd(). + +As a consequence, when the call to gfs2_sys_fs_add() fails in +gfs2_fill_super(), sdp = GFS2_SB(inode) will evaluate to NULL in iput() +-> gfs2_drop_inode(), and accessing sdp->sd_flags will be a NULL pointer +dereference. + +Fix that by only setting sb->s_fs_info to NULL when actually freeing the +object pointed to in free_sbd(). + +Fixes: ae9f3bd8259a ("gfs2: replace sd_aspace with sd_inode") +Reported-by: syzbot+b12826218502df019f9d@syzkaller.appspotmail.com +Signed-off-by: Andrew Price +Signed-off-by: Andreas Gruenbacher +Signed-off-by: Greg Kroah-Hartman +--- + fs/gfs2/ops_fstype.c | 4 +++- + fs/gfs2/sys.c | 1 - + 2 files changed, 3 insertions(+), 2 deletions(-) + +--- a/fs/gfs2/ops_fstype.c ++++ b/fs/gfs2/ops_fstype.c +@@ -64,8 +64,11 @@ static void gfs2_tune_init(struct gfs2_t + + void free_sbd(struct gfs2_sbd *sdp) + { ++ struct super_block *sb = sdp->sd_vfs; ++ + if (sdp->sd_lkstats) + free_percpu(sdp->sd_lkstats); ++ sb->s_fs_info = NULL; + kfree(sdp); + } + +@@ -1316,7 +1319,6 @@ fail_iput: + iput(sdp->sd_inode); + fail_free: + free_sbd(sdp); +- sb->s_fs_info = NULL; + return error; + } + +--- a/fs/gfs2/sys.c ++++ b/fs/gfs2/sys.c +@@ -764,7 +764,6 @@ fail_reg: + fs_err(sdp, "error %d adding sysfs files\n", error); + kobject_put(&sdp->sd_kobj); + wait_for_completion(&sdp->sd_kobj_unregister); +- sb->s_fs_info = NULL; + return error; + } + diff --git a/queue-6.15/net-usb-aqc111-debug-info-before-sanitation.patch b/queue-6.15/net-usb-aqc111-debug-info-before-sanitation.patch new file mode 100644 index 0000000000..e91febb106 --- /dev/null +++ b/queue-6.15/net-usb-aqc111-debug-info-before-sanitation.patch @@ -0,0 +1,51 @@ +From d3faab9b5a6a0477d69c38bd11c43aa5e936f929 Mon Sep 17 00:00:00 2001 +From: Oliver Neukum +Date: Wed, 28 May 2025 13:03:54 +0200 +Subject: net: usb: aqc111: debug info before sanitation + +From: Oliver Neukum + +commit d3faab9b5a6a0477d69c38bd11c43aa5e936f929 upstream. + +If we sanitize error returns, the debug statements need +to come before that so that we don't lose information. + +Signed-off-by: Oliver Neukum +Fixes: 405b0d610745 ("net: usb: aqc111: fix error handling of usbnet read calls") +Reviewed-by: Andrew Lunn +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/usb/aqc111.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/drivers/net/usb/aqc111.c ++++ b/drivers/net/usb/aqc111.c +@@ -31,11 +31,11 @@ static int aqc111_read_cmd_nopm(struct u + USB_RECIP_DEVICE, value, index, data, size); + + if (unlikely(ret < size)) { +- ret = ret < 0 ? ret : -ENODATA; +- + netdev_warn(dev->net, + "Failed to read(0x%x) reg index 0x%04x: %d\n", + cmd, index, ret); ++ ++ ret = ret < 0 ? ret : -ENODATA; + } + + return ret; +@@ -50,11 +50,11 @@ static int aqc111_read_cmd(struct usbnet + USB_RECIP_DEVICE, value, index, data, size); + + if (unlikely(ret < size)) { +- ret = ret < 0 ? ret : -ENODATA; +- + netdev_warn(dev->net, + "Failed to read(0x%x) reg index 0x%04x: %d\n", + cmd, index, ret); ++ ++ ret = ret < 0 ? ret : -ENODATA; + } + + return ret; diff --git a/queue-6.15/overflow-introduce-__define_flex-for-having-no-initializer.patch b/queue-6.15/overflow-introduce-__define_flex-for-having-no-initializer.patch new file mode 100644 index 0000000000..bf5067f3b5 --- /dev/null +++ b/queue-6.15/overflow-introduce-__define_flex-for-having-no-initializer.patch @@ -0,0 +1,80 @@ +From 5c78e793f78732b60276401f75cc1a101f9ad121 Mon Sep 17 00:00:00 2001 +From: Kees Cook +Date: Fri, 30 May 2025 12:06:47 -0700 +Subject: overflow: Introduce __DEFINE_FLEX for having no initializer + +From: Kees Cook + +commit 5c78e793f78732b60276401f75cc1a101f9ad121 upstream. + +While not yet in the tree, there is a proposed patch[1] that was +depending on the prior behavior of _DEFINE_FLEX, which did not have an +explicit initializer. Provide this via __DEFINE_FLEX now, which can also +have attributes applied (e.g. __uninitialized). + +Examples of the resulting initializer behaviors can be seen here: +https://godbolt.org/z/P7Go8Tr33 + +Link: https://lore.kernel.org/netdev/20250520205920.2134829-9-anthony.l.nguyen@intel.com [1] +Fixes: 47e36ed78406 ("overflow: Fix direct struct member initialization in _DEFINE_FLEX()") +Signed-off-by: Kees Cook +Signed-off-by: Greg Kroah-Hartman +--- + include/linux/overflow.h | 25 +++++++++++++++++++------ + 1 file changed, 19 insertions(+), 6 deletions(-) + +--- a/include/linux/overflow.h ++++ b/include/linux/overflow.h +@@ -389,25 +389,38 @@ static inline size_t __must_check size_s + struct_size((type *)NULL, member, count) + + /** +- * _DEFINE_FLEX() - helper macro for DEFINE_FLEX() family. +- * Enables caller macro to pass (different) initializer. ++ * __DEFINE_FLEX() - helper macro for DEFINE_FLEX() family. ++ * Enables caller macro to pass arbitrary trailing expressions + * + * @type: structure type name, including "struct" keyword. + * @name: Name for a variable to define. + * @member: Name of the array member. + * @count: Number of elements in the array; must be compile-time const. +- * @initializer: Initializer expression (e.g., pass `= { }` at minimum). ++ * @trailer: Trailing expressions for attributes and/or initializers. + */ +-#define _DEFINE_FLEX(type, name, member, count, initializer...) \ ++#define __DEFINE_FLEX(type, name, member, count, trailer...) \ + _Static_assert(__builtin_constant_p(count), \ + "onstack flex array members require compile-time const count"); \ + union { \ + u8 bytes[struct_size_t(type, member, count)]; \ + type obj; \ +- } name##_u = { .obj initializer }; \ ++ } name##_u trailer; \ + type *name = (type *)&name##_u + + /** ++ * _DEFINE_FLEX() - helper macro for DEFINE_FLEX() family. ++ * Enables caller macro to pass (different) initializer. ++ * ++ * @type: structure type name, including "struct" keyword. ++ * @name: Name for a variable to define. ++ * @member: Name of the array member. ++ * @count: Number of elements in the array; must be compile-time const. ++ * @initializer: Initializer expression (e.g., pass `= { }` at minimum). ++ */ ++#define _DEFINE_FLEX(type, name, member, count, initializer...) \ ++ __DEFINE_FLEX(type, name, member, count, = { .obj initializer }) ++ ++/** + * DEFINE_RAW_FLEX() - Define an on-stack instance of structure with a trailing + * flexible array member, when it does not have a __counted_by annotation. + * +@@ -421,7 +434,7 @@ static inline size_t __must_check size_s + * Use __struct_size(@name) to get compile-time size of it afterwards. + */ + #define DEFINE_RAW_FLEX(type, name, member, count) \ +- _DEFINE_FLEX(type, name, member, count, = {}) ++ __DEFINE_FLEX(type, name, member, count, = { }) + + /** + * DEFINE_FLEX() - Define an on-stack instance of structure with a trailing diff --git a/queue-6.15/regulator-dt-bindings-mt6357-drop-fixed-compatible-requirement.patch b/queue-6.15/regulator-dt-bindings-mt6357-drop-fixed-compatible-requirement.patch new file mode 100644 index 0000000000..781143f7a6 --- /dev/null +++ b/queue-6.15/regulator-dt-bindings-mt6357-drop-fixed-compatible-requirement.patch @@ -0,0 +1,124 @@ +From 9cfdd7752ba5f8cc9b8191e8c9aeeec246241fa4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?N=C3=ADcolas=20F=2E=20R=2E=20A=2E=20Prado?= + +Date: Wed, 14 May 2025 08:36:06 -0400 +Subject: regulator: dt-bindings: mt6357: Drop fixed compatible requirement +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Nícolas F. R. A. Prado + +commit 9cfdd7752ba5f8cc9b8191e8c9aeeec246241fa4 upstream. + +Some of the regulators on the MT6357 PMIC currently reference the +fixed-regulator dt-binding, which enforces the presence of a +regulator-fixed compatible. However since all regulators on the MT6357 +PMIC are handled by a single mt6357-regulator driver, probed through +MFD, the compatibles don't serve any purpose. In fact they cause +failures in the DT kselftest since they aren't probed by the fixed +regulator driver as would be expected. Furthermore this is the only +dt-binding in this family like this: mt6359-regulator and +mt6358-regulator don't require those compatibles. + +Commit d77e89b7b03f ("arm64: dts: mediatek: mt6357: Drop regulator-fixed +compatibles") removed the compatibles from Devicetree, but missed +updating the binding, which still requires them, introducing dt-binding +errors. Remove the compatible requirement by referencing the plain +regulator dt-binding instead to fix the dt-binding errors. + +Fixes: d77e89b7b03f ("arm64: dts: mediatek: mt6357: Drop regulator-fixed compatibles") +Signed-off-by: Nícolas F. R. A. Prado +Link: https://patch.msgid.link/20250514-mt6357-regulator-fixed-compatibles-removal-bindings-v1-1-2421e9cc6cc7@collabora.com +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman +--- + Documentation/devicetree/bindings/regulator/mediatek,mt6357-regulator.yaml | 12 ---------- + 1 file changed, 1 insertion(+), 11 deletions(-) + +--- a/Documentation/devicetree/bindings/regulator/mediatek,mt6357-regulator.yaml ++++ b/Documentation/devicetree/bindings/regulator/mediatek,mt6357-regulator.yaml +@@ -33,7 +33,7 @@ patternProperties: + + "^ldo-v(camio18|aud28|aux18|io18|io28|rf12|rf18|cn18|cn28|fe28)$": + type: object +- $ref: fixed-regulator.yaml# ++ $ref: regulator.yaml# + unevaluatedProperties: false + description: + Properties for single fixed LDO regulator. +@@ -112,7 +112,6 @@ examples: + regulator-enable-ramp-delay = <220>; + }; + mt6357_vfe28_reg: ldo-vfe28 { +- compatible = "regulator-fixed"; + regulator-name = "vfe28"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; +@@ -125,14 +124,12 @@ examples: + regulator-enable-ramp-delay = <110>; + }; + mt6357_vrf18_reg: ldo-vrf18 { +- compatible = "regulator-fixed"; + regulator-name = "vrf18"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-enable-ramp-delay = <110>; + }; + mt6357_vrf12_reg: ldo-vrf12 { +- compatible = "regulator-fixed"; + regulator-name = "vrf12"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; +@@ -157,14 +154,12 @@ examples: + regulator-enable-ramp-delay = <264>; + }; + mt6357_vcn28_reg: ldo-vcn28 { +- compatible = "regulator-fixed"; + regulator-name = "vcn28"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + regulator-enable-ramp-delay = <264>; + }; + mt6357_vcn18_reg: ldo-vcn18 { +- compatible = "regulator-fixed"; + regulator-name = "vcn18"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; +@@ -183,7 +178,6 @@ examples: + regulator-enable-ramp-delay = <264>; + }; + mt6357_vcamio_reg: ldo-vcamio18 { +- compatible = "regulator-fixed"; + regulator-name = "vcamio"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; +@@ -212,28 +206,24 @@ examples: + regulator-always-on; + }; + mt6357_vaux18_reg: ldo-vaux18 { +- compatible = "regulator-fixed"; + regulator-name = "vaux18"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-enable-ramp-delay = <264>; + }; + mt6357_vaud28_reg: ldo-vaud28 { +- compatible = "regulator-fixed"; + regulator-name = "vaud28"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + regulator-enable-ramp-delay = <264>; + }; + mt6357_vio28_reg: ldo-vio28 { +- compatible = "regulator-fixed"; + regulator-name = "vio28"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + regulator-enable-ramp-delay = <264>; + }; + mt6357_vio18_reg: ldo-vio18 { +- compatible = "regulator-fixed"; + regulator-name = "vio18"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; diff --git a/queue-6.15/series b/queue-6.15/series index 6fd98482ba..f5c58ea506 100644 --- a/queue-6.15/series +++ b/queue-6.15/series @@ -771,3 +771,10 @@ xen-arm-call-uaccess_ttbr0_enable-for-dm_op-hypercall.patch x86-iopl-cure-tif_io_bitmap-inconsistencies.patch x86-hyperv-fix-apic-id-and-vp-index-confusion-in-hv_snp_boot_ap.patch x86-fred-signal-prevent-immediate-repeat-of-single-step-trap-on-return-from-sigtrap-handler.patch +calipso-unlock-rcu-before-returning-eafnosupport.patch +do_move_mount-split-the-checks-in-subtree-of-our-ns-and-entire-anon-cases.patch +regulator-dt-bindings-mt6357-drop-fixed-compatible-requirement.patch +usb-misc-onboard_usb_dev-fix-build-warning-for-config_usb_onboard_dev_usb5744-n.patch +net-usb-aqc111-debug-info-before-sanitation.patch +overflow-introduce-__define_flex-for-having-no-initializer.patch +gfs2-don-t-clear-sb-s_fs_info-in-gfs2_sys_fs_add.patch diff --git a/queue-6.15/usb-misc-onboard_usb_dev-fix-build-warning-for-config_usb_onboard_dev_usb5744-n.patch b/queue-6.15/usb-misc-onboard_usb_dev-fix-build-warning-for-config_usb_onboard_dev_usb5744-n.patch new file mode 100644 index 0000000000..635ce0f52b --- /dev/null +++ b/queue-6.15/usb-misc-onboard_usb_dev-fix-build-warning-for-config_usb_onboard_dev_usb5744-n.patch @@ -0,0 +1,65 @@ +From 662a9ece32add94469138ae66999ee16cb37a531 Mon Sep 17 00:00:00 2001 +From: Arnd Bergmann +Date: Fri, 23 May 2025 14:09:43 +0200 +Subject: usb: misc: onboard_usb_dev: fix build warning for CONFIG_USB_ONBOARD_DEV_USB5744=n + +From: Arnd Bergmann + +commit 662a9ece32add94469138ae66999ee16cb37a531 upstream. + +When the USB5744 option is disabled, the onboard_usb driver warns about +unused functions: + +drivers/usb/misc/onboard_usb_dev.c:358:12: error: 'onboard_dev_5744_i2c_write_byte' defined but not used [-Werror=unused-function] + 358 | static int onboard_dev_5744_i2c_write_byte(struct i2c_client *client, u16 addr, u8 data) + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +drivers/usb/misc/onboard_usb_dev.c:313:12: error: 'onboard_dev_5744_i2c_read_byte' defined but not used [-Werror=unused-function] + 313 | static int onboard_dev_5744_i2c_read_byte(struct i2c_client *client, u16 addr, u8 *data) + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Extend the #ifdef block a little further to cover all of these functions. +Ideally we'd use use if(IS_ENABLED()) instead, but that doesn't currently +work because the i2c_transfer() and i2c_smbus_write_word_data() function +declarations are hidden when CONFIG_I2C is disabled. + +Fixes: 1143d41922c0 ("usb: misc: onboard_usb_dev: Fix usb5744 initialization sequence") +Signed-off-by: Arnd Bergmann +Link: https://lore.kernel.org/r/20250523120947.2170302-1-arnd@kernel.org +Signed-off-by: Greg Kroah-Hartman +--- + drivers/usb/misc/onboard_usb_dev.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +--- a/drivers/usb/misc/onboard_usb_dev.c ++++ b/drivers/usb/misc/onboard_usb_dev.c +@@ -310,6 +310,7 @@ static void onboard_dev_attach_usb_drive + pr_err("Failed to attach USB driver: %pe\n", ERR_PTR(err)); + } + ++#if IS_ENABLED(CONFIG_USB_ONBOARD_DEV_USB5744) + static int onboard_dev_5744_i2c_read_byte(struct i2c_client *client, u16 addr, u8 *data) + { + struct i2c_msg msg[2]; +@@ -388,7 +389,6 @@ static int onboard_dev_5744_i2c_write_by + + static int onboard_dev_5744_i2c_init(struct i2c_client *client) + { +-#if IS_ENABLED(CONFIG_USB_ONBOARD_DEV_USB5744) + struct device *dev = &client->dev; + int ret; + u8 reg; +@@ -417,10 +417,13 @@ static int onboard_dev_5744_i2c_init(str + return dev_err_probe(dev, ret, "USB Attach with SMBus command failed\n"); + + return ret; ++} + #else ++static int onboard_dev_5744_i2c_init(struct i2c_client *client) ++{ + return -ENODEV; +-#endif + } ++#endif + + static int onboard_dev_probe(struct platform_device *pdev) + {