From: Greg Kroah-Hartman Date: Wed, 15 Jan 2025 10:32:30 +0000 (+0100) Subject: 6.12-stable patches X-Git-Tag: v6.1.125~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=35693a597e550080fa9bc0054814614576621de7;p=thirdparty%2Fkernel%2Fstable-queue.git 6.12-stable patches added patches: iio-imu-inv_icm42600-fix-spi-burst-write-not-supported.patch netdev-prevent-accessing-napi-instances-from-another-namespace.patch --- diff --git a/queue-6.12/iio-imu-inv_icm42600-fix-spi-burst-write-not-supported.patch b/queue-6.12/iio-imu-inv_icm42600-fix-spi-burst-write-not-supported.patch new file mode 100644 index 0000000000..57c538367e --- /dev/null +++ b/queue-6.12/iio-imu-inv_icm42600-fix-spi-burst-write-not-supported.patch @@ -0,0 +1,72 @@ +From c0f866de4ce447bca3191b9cefac60c4b36a7922 Mon Sep 17 00:00:00 2001 +From: Jean-Baptiste Maneyrol +Date: Tue, 12 Nov 2024 10:30:10 +0100 +Subject: iio: imu: inv_icm42600: fix spi burst write not supported + +From: Jean-Baptiste Maneyrol + +commit c0f866de4ce447bca3191b9cefac60c4b36a7922 upstream. + +Burst write with SPI is not working for all icm42600 chips. It was +only used for setting user offsets with regmap_bulk_write. + +Add specific SPI regmap config for using only single write with SPI. + +Fixes: 9f9ff91b775b ("iio: imu: inv_icm42600: add SPI driver for inv_icm42600 driver") +Cc: stable@vger.kernel.org +Signed-off-by: Jean-Baptiste Maneyrol +Link: https://patch.msgid.link/20241112-inv-icm42600-fix-spi-burst-write-not-supported-v2-1-97690dc03607@tdk.com +Signed-off-by: Jonathan Cameron +Signed-off-by: Greg Kroah-Hartman +--- + drivers/iio/imu/inv_icm42600/inv_icm42600.h | 1 + + drivers/iio/imu/inv_icm42600/inv_icm42600_core.c | 15 +++++++++++++++ + drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c | 3 ++- + 3 files changed, 18 insertions(+), 1 deletion(-) + +--- a/drivers/iio/imu/inv_icm42600/inv_icm42600.h ++++ b/drivers/iio/imu/inv_icm42600/inv_icm42600.h +@@ -403,6 +403,7 @@ struct inv_icm42600_sensor_state { + typedef int (*inv_icm42600_bus_setup)(struct inv_icm42600_state *); + + extern const struct regmap_config inv_icm42600_regmap_config; ++extern const struct regmap_config inv_icm42600_spi_regmap_config; + extern const struct dev_pm_ops inv_icm42600_pm_ops; + + const struct iio_mount_matrix * +--- a/drivers/iio/imu/inv_icm42600/inv_icm42600_core.c ++++ b/drivers/iio/imu/inv_icm42600/inv_icm42600_core.c +@@ -87,6 +87,21 @@ const struct regmap_config inv_icm42600_ + }; + EXPORT_SYMBOL_NS_GPL(inv_icm42600_regmap_config, IIO_ICM42600); + ++/* define specific regmap for SPI not supporting burst write */ ++const struct regmap_config inv_icm42600_spi_regmap_config = { ++ .name = "inv_icm42600", ++ .reg_bits = 8, ++ .val_bits = 8, ++ .max_register = 0x4FFF, ++ .ranges = inv_icm42600_regmap_ranges, ++ .num_ranges = ARRAY_SIZE(inv_icm42600_regmap_ranges), ++ .volatile_table = inv_icm42600_regmap_volatile_accesses, ++ .rd_noinc_table = inv_icm42600_regmap_rd_noinc_accesses, ++ .cache_type = REGCACHE_RBTREE, ++ .use_single_write = true, ++}; ++EXPORT_SYMBOL_NS_GPL(inv_icm42600_spi_regmap_config, IIO_ICM42600); ++ + struct inv_icm42600_hw { + uint8_t whoami; + const char *name; +--- a/drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c ++++ b/drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c +@@ -59,7 +59,8 @@ static int inv_icm42600_probe(struct spi + return -EINVAL; + chip = (uintptr_t)match; + +- regmap = devm_regmap_init_spi(spi, &inv_icm42600_regmap_config); ++ /* use SPI specific regmap */ ++ regmap = devm_regmap_init_spi(spi, &inv_icm42600_spi_regmap_config); + if (IS_ERR(regmap)) + return PTR_ERR(regmap); + diff --git a/queue-6.12/netdev-prevent-accessing-napi-instances-from-another-namespace.patch b/queue-6.12/netdev-prevent-accessing-napi-instances-from-another-namespace.patch new file mode 100644 index 0000000000..dac87a3b02 --- /dev/null +++ b/queue-6.12/netdev-prevent-accessing-napi-instances-from-another-namespace.patch @@ -0,0 +1,129 @@ +From d1cacd74776895f6435941f86a1130e58f6dd226 Mon Sep 17 00:00:00 2001 +From: Jakub Kicinski +Date: Mon, 6 Jan 2025 10:01:36 -0800 +Subject: netdev: prevent accessing NAPI instances from another namespace + +From: Jakub Kicinski + +commit d1cacd74776895f6435941f86a1130e58f6dd226 upstream. + +The NAPI IDs were not fully exposed to user space prior to the netlink +API, so they were never namespaced. The netlink API must ensure that +at the very least NAPI instance belongs to the same netns as the owner +of the genl sock. + +napi_by_id() can become static now, but it needs to move because of +dev_get_by_napi_id(). + +Cc: stable@vger.kernel.org +Fixes: 1287c1ae0fc2 ("netdev-genl: Support setting per-NAPI config values") +Fixes: 27f91aaf49b3 ("netdev-genl: Add netlink framework functions for napi") +Reviewed-by: Sridhar Samudrala +Reviewed-by: Joe Damato +Link: https://patch.msgid.link/20250106180137.1861472-1-kuba@kernel.org +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + net/core/dev.c | 43 ++++++++++++++++++++++++++++++------------- + net/core/dev.h | 3 ++- + net/core/netdev-genl.c | 4 +--- + 3 files changed, 33 insertions(+), 17 deletions(-) + +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -753,6 +753,36 @@ int dev_fill_forward_path(const struct n + } + EXPORT_SYMBOL_GPL(dev_fill_forward_path); + ++/* must be called under rcu_read_lock(), as we dont take a reference */ ++static struct napi_struct *napi_by_id(unsigned int napi_id) ++{ ++ unsigned int hash = napi_id % HASH_SIZE(napi_hash); ++ struct napi_struct *napi; ++ ++ hlist_for_each_entry_rcu(napi, &napi_hash[hash], napi_hash_node) ++ if (napi->napi_id == napi_id) ++ return napi; ++ ++ return NULL; ++} ++ ++/* must be called under rcu_read_lock(), as we dont take a reference */ ++struct napi_struct *netdev_napi_by_id(struct net *net, unsigned int napi_id) ++{ ++ struct napi_struct *napi; ++ ++ napi = napi_by_id(napi_id); ++ if (!napi) ++ return NULL; ++ ++ if (WARN_ON_ONCE(!napi->dev)) ++ return NULL; ++ if (!net_eq(net, dev_net(napi->dev))) ++ return NULL; ++ ++ return napi; ++} ++ + /** + * __dev_get_by_name - find a device by its name + * @net: the applicable net namespace +@@ -6291,19 +6321,6 @@ bool napi_complete_done(struct napi_stru + } + EXPORT_SYMBOL(napi_complete_done); + +-/* must be called under rcu_read_lock(), as we dont take a reference */ +-struct napi_struct *napi_by_id(unsigned int napi_id) +-{ +- unsigned int hash = napi_id % HASH_SIZE(napi_hash); +- struct napi_struct *napi; +- +- hlist_for_each_entry_rcu(napi, &napi_hash[hash], napi_hash_node) +- if (napi->napi_id == napi_id) +- return napi; +- +- return NULL; +-} +- + static void skb_defer_free_flush(struct softnet_data *sd) + { + struct sk_buff *skb, *next; +--- a/net/core/dev.h ++++ b/net/core/dev.h +@@ -22,6 +22,8 @@ struct sd_flow_limit { + + extern int netdev_flow_limit_table_len; + ++struct napi_struct *netdev_napi_by_id(struct net *net, unsigned int napi_id); ++ + #ifdef CONFIG_PROC_FS + int __init dev_proc_init(void); + #else +@@ -146,7 +148,6 @@ void xdp_do_check_flushed(struct napi_st + static inline void xdp_do_check_flushed(struct napi_struct *napi) { } + #endif + +-struct napi_struct *napi_by_id(unsigned int napi_id); + void kick_defer_list_purge(struct softnet_data *sd, unsigned int cpu); + + #define XMIT_RECURSION_LIMIT 8 +--- a/net/core/netdev-genl.c ++++ b/net/core/netdev-genl.c +@@ -164,8 +164,6 @@ netdev_nl_napi_fill_one(struct sk_buff * + void *hdr; + pid_t pid; + +- if (WARN_ON_ONCE(!napi->dev)) +- return -EINVAL; + if (!(napi->dev->flags & IFF_UP)) + return 0; + +@@ -216,7 +214,7 @@ int netdev_nl_napi_get_doit(struct sk_bu + rtnl_lock(); + rcu_read_lock(); + +- napi = napi_by_id(napi_id); ++ napi = netdev_napi_by_id(genl_info_net(info), napi_id); + if (napi) { + err = netdev_nl_napi_fill_one(rsp, napi, info); + } else { diff --git a/queue-6.12/series b/queue-6.12/series index 5dcdfbbeb8..bd82ee782c 100644 --- a/queue-6.12/series +++ b/queue-6.12/series @@ -185,3 +185,5 @@ drm-xe-oa-add-input-fence-dependencies.patch xe-oa-fix-query-mode-of-operation-for-oar-oac.patch drm-mediatek-only-touch-disp_reg_ovl_pitch_msb-if-af.patch io_uring-don-t-touch-sqd-thread-off-tw-add.patch +iio-imu-inv_icm42600-fix-spi-burst-write-not-supported.patch +netdev-prevent-accessing-napi-instances-from-another-namespace.patch