From a3c82028fa94d81caeb626e919d1c3a856e7c0f6 Mon Sep 17 00:00:00 2001 From: Sujeev Dias Date: Mon, 18 Jun 2018 16:28:48 -0700 Subject: [PATCH] mhi: core: use fixed-length string for mhi_device_id If we don't use a fixed-length string, dynamically loadable modules related to MHI will not load properly. CRs-Fixed: 2258358 Change-Id: Ice7c6d42c26807a5085e22b44451f57d6edf81dd Signed-off-by: Sujeev Dias --- drivers/bus/mhi/core/mhi_dtr.c | 2 +- drivers/bus/mhi/core/mhi_init.c | 2 +- drivers/bus/mhi/devices/mhi_netdev.c | 2 +- drivers/bus/mhi/devices/mhi_uci.c | 2 +- drivers/char/diag/diagfwd_mhi.c | 2 +- drivers/soc/qcom/qdss_bridge.c | 2 +- include/linux/mod_devicetable.h | 4 +++- 7 files changed, 9 insertions(+), 7 deletions(-) diff --git a/drivers/bus/mhi/core/mhi_dtr.c b/drivers/bus/mhi/core/mhi_dtr.c index 6ffe80163a96..1db34b69eace 100644 --- a/drivers/bus/mhi/core/mhi_dtr.c +++ b/drivers/bus/mhi/core/mhi_dtr.c @@ -212,7 +212,7 @@ static int mhi_dtr_probe(struct mhi_device *mhi_dev, static const struct mhi_device_id mhi_dtr_table[] = { { .chan = "IP_CTRL" }, - { NULL }, + {}, }; static struct mhi_driver mhi_dtr_driver = { diff --git a/drivers/bus/mhi/core/mhi_init.c b/drivers/bus/mhi/core/mhi_init.c index 5fc9c7f17618..b5b9d6fd6bca 100644 --- a/drivers/bus/mhi/core/mhi_init.c +++ b/drivers/bus/mhi/core/mhi_init.c @@ -1283,7 +1283,7 @@ static int mhi_match(struct device *dev, struct device_driver *drv) if (mhi_dev->dev_type == MHI_CONTROLLER_TYPE) return 0; - for (id = mhi_drv->id_table; id->chan; id++) + for (id = mhi_drv->id_table; id->chan[0]; id++) if (!strcmp(mhi_dev->chan_name, id->chan)) { mhi_dev->id = id; return 1; diff --git a/drivers/bus/mhi/devices/mhi_netdev.c b/drivers/bus/mhi/devices/mhi_netdev.c index 8b4ba7080036..c6ec258d43cb 100644 --- a/drivers/bus/mhi/devices/mhi_netdev.c +++ b/drivers/bus/mhi/devices/mhi_netdev.c @@ -977,7 +977,7 @@ static int mhi_netdev_probe(struct mhi_device *mhi_dev, static const struct mhi_device_id mhi_netdev_match_table[] = { { .chan = "IP_HW0" }, { .chan = "IP_HW_ADPL" }, - { NULL }, + {}, }; static struct mhi_driver mhi_netdev_driver = { diff --git a/drivers/bus/mhi/devices/mhi_uci.c b/drivers/bus/mhi/devices/mhi_uci.c index 12934efcd4a8..eed5429e918a 100644 --- a/drivers/bus/mhi/devices/mhi_uci.c +++ b/drivers/bus/mhi/devices/mhi_uci.c @@ -655,7 +655,7 @@ static const struct mhi_device_id mhi_uci_match_table[] = { { .chan = "TF", .driver_data = 0x1000 }, { .chan = "BL", .driver_data = 0x1000 }, { .chan = "DUN", .driver_data = 0x1000 }, - { NULL }, + {}, }; static struct mhi_driver mhi_uci_driver = { diff --git a/drivers/char/diag/diagfwd_mhi.c b/drivers/char/diag/diagfwd_mhi.c index 58259e1221b8..215f5a54fa07 100644 --- a/drivers/char/diag/diagfwd_mhi.c +++ b/drivers/char/diag/diagfwd_mhi.c @@ -720,7 +720,7 @@ void diag_mhi_exit(void) static const struct mhi_device_id diag_mhi_match_table[] = { { .chan = "DIAG", .driver_data = MHI_1 }, { .chan = "DCI", .driver_data = MHI_DCI_1 }, - {NULL}, + {}, }; static struct mhi_driver diag_mhi_driver = { diff --git a/drivers/soc/qcom/qdss_bridge.c b/drivers/soc/qcom/qdss_bridge.c index f336cfbdca49..79921d2259d3 100644 --- a/drivers/soc/qcom/qdss_bridge.c +++ b/drivers/soc/qcom/qdss_bridge.c @@ -421,7 +421,7 @@ err: static const struct mhi_device_id qdss_mhi_match_table[] = { { .chan = "QDSS" }, - { NULL }, + {}, }; static struct mhi_driver qdss_mhi_driver = { diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h index 76b4958d078f..a08bfd52b360 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h @@ -705,6 +705,8 @@ struct fsl_mc_device_id { const char obj_type[16]; }; +#define MHI_NAME_SIZE 32 + /** * struct mhi_device_id - MHI device identification * @chan: MHI channel name @@ -712,7 +714,7 @@ struct fsl_mc_device_id { */ struct mhi_device_id { - const char *chan; + const char chan[MHI_NAME_SIZE]; kernel_ulong_t driver_data; };