* [PATCH] usb: ucsi: huawei_gaokun: move typec_altmode off stack
@ 2026-06-18 14:33 Arnd Bergmann
2026-06-18 15:21 ` Pengyu Luo
0 siblings, 1 reply; 2+ messages in thread
From: Arnd Bergmann @ 2026-06-18 14:33 UTC (permalink / raw)
To: Pengyu Luo, Heikki Krogerus, Greg Kroah-Hartman
Cc: Arnd Bergmann, Duoming Zhou, linux-usb, linux-kernel
From: Arnd Bergmann <arnd@arndb.de>
The typec_altmode structure contains a 'struct device' object
that cannot be allocated on the stack because of its size, even
when ignoring the lifetime rules:
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c:326:13: error: stack frame size (1456) exceeds limit (1280) in 'gaokun_ucsi_usb_notify_ind' [-Werror,-Wframe-larger-than]
326 | static void gaokun_ucsi_usb_notify_ind(struct gaokun_ucsi *uec)
Since the altmode is always associated with a port here, move
it into the port object and avoid at least the stack allocation
issue.
Fixes: 1c2b66a7d725 ("usb: ucsi: huawei_gaokun: support mode switching")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
This is probably not the fix we want, as it still leaves an uninitialized
device object in the structure, but it illustrates the issue and
fixing it like this has no immediate downsides.
Please check if you want this as a hotfix for the moment, or can provide
a more elaborate fix. Reverting 1c2b66a7d725 may also be an option.
---
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c b/drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
index ad669d2f8b9c..ca1b534cb183 100644
--- a/drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
+++ b/drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
@@ -84,6 +84,8 @@ struct gaokun_ucsi_port {
struct auxiliary_device *bridge;
struct typec_mux *typec_mux;
+ struct typec_mux_state state;
+ struct typec_altmode dp_alt;
int idx;
enum gaokun_ucsi_ccx ccx;
@@ -292,24 +294,22 @@ static int gaokun_ucsi_refresh(struct gaokun_ucsi *uec)
static void gaokun_ucsi_handle_usb_mode(struct gaokun_ucsi_port *port)
{
struct gaokun_ucsi *uec = port->ucsi;
- struct typec_mux_state state = {};
- struct typec_altmode dp_alt = {};
int idx = port->idx, ret;
/*
* For every typec port on this platform, the only mode-switch is
* controlled by its qmp combo phy which consumes svid and mode only.
*/
- dp_alt.svid = port->svid;
- state.mode = port->mode;
- state.alt = &dp_alt;
+ port->dp_alt.svid = port->svid;
+ port->state.mode = port->mode;
+ port->state.alt = &port->dp_alt;
if (idx >= uec->num_ports) {
dev_warn(uec->dev, "altmode port out of range: %d\n", idx);
return;
}
- ret = typec_mux_set(port->typec_mux, &state);
+ ret = typec_mux_set(port->typec_mux, &port->state);
if (ret)
dev_err(uec->dev, "failed to set mux %d\n", ret);
--
2.39.5
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH] usb: ucsi: huawei_gaokun: move typec_altmode off stack
2026-06-18 14:33 [PATCH] usb: ucsi: huawei_gaokun: move typec_altmode off stack Arnd Bergmann
@ 2026-06-18 15:21 ` Pengyu Luo
0 siblings, 0 replies; 2+ messages in thread
From: Pengyu Luo @ 2026-06-18 15:21 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Pengyu Luo, Heikki Krogerus, Greg Kroah-Hartman, Arnd Bergmann,
Duoming Zhou, linux-usb, linux-kernel
On Thu, 18 Jun 2026 16:33:14 +0200, Arnd Bergmann <arnd@kernel.org> wrote:
> usb: ucsi: huawei_gaokun: move typec_altmode off stack
Reviewed-by: Pengyu Luo <mitltlatltl@gmail.com>
--
Best wishes,
Pengyu
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-06-18 15:22 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-18 14:33 [PATCH] usb: ucsi: huawei_gaokun: move typec_altmode off stack Arnd Bergmann
2026-06-18 15:21 ` Pengyu Luo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox