From: Arnd Bergmann <arnd@kernel.org> To: netdev@vger.kernel.org Cc: Arnd Bergmann <arnd@arndb.de>, linux-kernel@vger.kernel.org, linux-wireless@vger.kernel.org, bridge@lists.linux-foundation.org, linux-hams@vger.kernel.org, Jakub Kicinski <kuba@kernel.org>, Christoph Hellwig <hch@lst.de>, Alexander Viro <viro@zeniv.linux.org.uk>, Johannes Berg <johannes@sipsolutions.net>, Andrew Lunn <andrew@lunn.ch>, Heiner Kallweit <hkallweit1@gmail.com> Subject: [RFC net-next 13/28] eql: use ndo_siocdevprivate Date: Fri, 6 Nov 2020 23:17:28 +0100 [thread overview] Message-ID: <20201106221743.3271965-14-arnd@kernel.org> (raw) In-Reply-To: <20201106221743.3271965-1-arnd@kernel.org> From: Arnd Bergmann <arnd@arndb.de> The private ioctls in eql pass the arguments correctly through ifr_data, but the slaving_request_t and slave_config_t structures are incompatible with compat mode and need special conversion code in the driver. Convert to siocdevprivate for now, and return an error when called in compat mode. Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- drivers/net/eql.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/drivers/net/eql.c b/drivers/net/eql.c index 74263f8efe1a..b8707559a0f5 100644 --- a/drivers/net/eql.c +++ b/drivers/net/eql.c @@ -131,7 +131,8 @@ static int eql_open(struct net_device *dev); static int eql_close(struct net_device *dev); -static int eql_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd); +static int eql_siocdevprivate(struct net_device *dev, struct ifreq *ifr, + void __user *data, int cmd); static netdev_tx_t eql_slave_xmit(struct sk_buff *skb, struct net_device *dev); #define eql_is_slave(dev) ((dev->flags & IFF_SLAVE) == IFF_SLAVE) @@ -170,7 +171,7 @@ static const char version[] __initconst = static const struct net_device_ops eql_netdev_ops = { .ndo_open = eql_open, .ndo_stop = eql_close, - .ndo_do_ioctl = eql_ioctl, + .ndo_siocdevprivate = eql_siocdevprivate, .ndo_start_xmit = eql_slave_xmit, }; @@ -268,25 +269,29 @@ static int eql_s_slave_cfg(struct net_device *dev, slave_config_t __user *sc); static int eql_g_master_cfg(struct net_device *dev, master_config_t __user *mc); static int eql_s_master_cfg(struct net_device *dev, master_config_t __user *mc); -static int eql_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) +static int eql_siocdevprivate(struct net_device *dev, struct ifreq *ifr, + void __user *data, int cmd) { if (cmd != EQL_GETMASTRCFG && cmd != EQL_GETSLAVECFG && !capable(CAP_NET_ADMIN)) return -EPERM; + if (in_compat_syscall()) /* to be implemented */ + return -EOPNOTSUPP; + switch (cmd) { case EQL_ENSLAVE: - return eql_enslave(dev, ifr->ifr_data); + return eql_enslave(dev, data); case EQL_EMANCIPATE: - return eql_emancipate(dev, ifr->ifr_data); + return eql_emancipate(dev, data); case EQL_GETSLAVECFG: - return eql_g_slave_cfg(dev, ifr->ifr_data); + return eql_g_slave_cfg(dev, data); case EQL_SETSLAVECFG: - return eql_s_slave_cfg(dev, ifr->ifr_data); + return eql_s_slave_cfg(dev, data); case EQL_GETMASTRCFG: - return eql_g_master_cfg(dev, ifr->ifr_data); + return eql_g_master_cfg(dev, data); case EQL_SETMASTRCFG: - return eql_s_master_cfg(dev, ifr->ifr_data); + return eql_s_master_cfg(dev, data); default: return -EOPNOTSUPP; } -- 2.27.0
WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@kernel.org> To: netdev@vger.kernel.org Cc: Andrew Lunn <andrew@lunn.ch>, Arnd Bergmann <arnd@arndb.de>, bridge@lists.linux-foundation.org, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, Alexander Viro <viro@zeniv.linux.org.uk>, Jakub Kicinski <kuba@kernel.org>, linux-hams@vger.kernel.org, Johannes Berg <johannes@sipsolutions.net>, Christoph Hellwig <hch@lst.de>, Heiner Kallweit <hkallweit1@gmail.com> Subject: [Bridge] [RFC net-next 13/28] eql: use ndo_siocdevprivate Date: Fri, 6 Nov 2020 23:17:28 +0100 [thread overview] Message-ID: <20201106221743.3271965-14-arnd@kernel.org> (raw) In-Reply-To: <20201106221743.3271965-1-arnd@kernel.org> From: Arnd Bergmann <arnd@arndb.de> The private ioctls in eql pass the arguments correctly through ifr_data, but the slaving_request_t and slave_config_t structures are incompatible with compat mode and need special conversion code in the driver. Convert to siocdevprivate for now, and return an error when called in compat mode. Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- drivers/net/eql.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/drivers/net/eql.c b/drivers/net/eql.c index 74263f8efe1a..b8707559a0f5 100644 --- a/drivers/net/eql.c +++ b/drivers/net/eql.c @@ -131,7 +131,8 @@ static int eql_open(struct net_device *dev); static int eql_close(struct net_device *dev); -static int eql_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd); +static int eql_siocdevprivate(struct net_device *dev, struct ifreq *ifr, + void __user *data, int cmd); static netdev_tx_t eql_slave_xmit(struct sk_buff *skb, struct net_device *dev); #define eql_is_slave(dev) ((dev->flags & IFF_SLAVE) == IFF_SLAVE) @@ -170,7 +171,7 @@ static const char version[] __initconst = static const struct net_device_ops eql_netdev_ops = { .ndo_open = eql_open, .ndo_stop = eql_close, - .ndo_do_ioctl = eql_ioctl, + .ndo_siocdevprivate = eql_siocdevprivate, .ndo_start_xmit = eql_slave_xmit, }; @@ -268,25 +269,29 @@ static int eql_s_slave_cfg(struct net_device *dev, slave_config_t __user *sc); static int eql_g_master_cfg(struct net_device *dev, master_config_t __user *mc); static int eql_s_master_cfg(struct net_device *dev, master_config_t __user *mc); -static int eql_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) +static int eql_siocdevprivate(struct net_device *dev, struct ifreq *ifr, + void __user *data, int cmd) { if (cmd != EQL_GETMASTRCFG && cmd != EQL_GETSLAVECFG && !capable(CAP_NET_ADMIN)) return -EPERM; + if (in_compat_syscall()) /* to be implemented */ + return -EOPNOTSUPP; + switch (cmd) { case EQL_ENSLAVE: - return eql_enslave(dev, ifr->ifr_data); + return eql_enslave(dev, data); case EQL_EMANCIPATE: - return eql_emancipate(dev, ifr->ifr_data); + return eql_emancipate(dev, data); case EQL_GETSLAVECFG: - return eql_g_slave_cfg(dev, ifr->ifr_data); + return eql_g_slave_cfg(dev, data); case EQL_SETSLAVECFG: - return eql_s_slave_cfg(dev, ifr->ifr_data); + return eql_s_slave_cfg(dev, data); case EQL_GETMASTRCFG: - return eql_g_master_cfg(dev, ifr->ifr_data); + return eql_g_master_cfg(dev, data); case EQL_SETMASTRCFG: - return eql_s_master_cfg(dev, ifr->ifr_data); + return eql_s_master_cfg(dev, data); default: return -EOPNOTSUPP; } -- 2.27.0
next prev parent reply other threads:[~2020-11-06 22:21 UTC|newest] Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-11-06 22:17 [RFC net-next 00/28] ndo_ioctl rework Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 01/28] net: split out SIOCDEVPRIVATE handling from dev_ioctl Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 02/28] staging: rtlwifi: use siocdevprivate Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 03/28] staging: wlan-ng: " Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 04/28] hostap: use ndo_siocdevprivate Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 05/28] wireless: remove old ioctls Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 06/28] bridge: use ndo_siocdevprivate Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 07/28] phonet: use siocdevprivate Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 08/28] tulip: use ndo_siocdevprivate Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 09/28] bonding: use siocdevprivate Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 10/28] appletalk: use ndo_siocdevprivate Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 11/28] hamachi: " Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 12/28] tehuti: " Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` Arnd Bergmann [this message] 2020-11-06 22:17 ` [Bridge] [RFC net-next 13/28] eql: " Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 14/28] fddi: " Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 15/28] net: usb: " Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 16/28] slip/plip: " Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 17/28] qeth: " Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 18/28] cxgb3: " Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 19/28] dev_ioctl: pass SIOCDEVPRIVATE data separately Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 20/28] dev_ioctl: split out ndo_eth_ioctl Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 21/28] wan: use ndo_siocdevprivate Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 22/28] hamradio: " Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 23/28] airo: " Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 24/28] ip_tunnel: " Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 25/28] hippi: " Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 26/28] sb1000: " Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 27/28] ppp: " Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-06 22:17 ` [RFC net-next 28/28] net: socket: return changed ifreq from SIOCDEVPRIVATE Arnd Bergmann 2020-11-06 22:17 ` [Bridge] " Arnd Bergmann 2020-11-08 0:06 ` [RFC net-next 00/28] ndo_ioctl rework Jakub Kicinski 2020-11-08 0:06 ` [Bridge] " Jakub Kicinski 2020-11-08 0:06 ` Jakub Kicinski 2020-11-08 8:27 ` Arnd Bergmann 2020-11-08 8:27 ` [Bridge] " Arnd Bergmann 2020-11-08 11:21 ` Kalle Valo 2020-11-08 11:21 ` [Bridge] " Kalle Valo 2020-11-08 11:42 ` Arnd Bergmann 2020-11-08 11:42 ` [Bridge] " Arnd Bergmann 2020-11-08 11:42 ` Arnd Bergmann 2020-11-09 11:25 ` Kalle Valo 2020-11-09 11:25 ` [Bridge] " Kalle Valo 2020-11-09 11:25 ` Kalle Valo
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20201106221743.3271965-14-arnd@kernel.org \ --to=arnd@kernel.org \ --cc=andrew@lunn.ch \ --cc=arnd@arndb.de \ --cc=bridge@lists.linux-foundation.org \ --cc=hch@lst.de \ --cc=hkallweit1@gmail.com \ --cc=johannes@sipsolutions.net \ --cc=kuba@kernel.org \ --cc=linux-hams@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-wireless@vger.kernel.org \ --cc=netdev@vger.kernel.org \ --cc=viro@zeniv.linux.org.uk \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.