Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d2911255 authored by David S. Miller's avatar David S. Miller Committed by David S. Miller
Browse files

wext: Pass iwreq pointer down into standard/private handlers.



They have no need to see the object as an ifreq.

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent ca1e8bb8
Loading
Loading
Loading
Loading
+8 −9
Original line number Original line Diff line number Diff line
@@ -832,11 +832,10 @@ static int ioctl_standard_iw_point(struct iw_point *iwp, unsigned int cmd,
 * user space and kernel space.
 * user space and kernel space.
 */
 */
static int ioctl_standard_call(struct net_device *	dev,
static int ioctl_standard_call(struct net_device *	dev,
			       struct ifreq *		ifr,
			       struct iwreq		*iwr,
			       unsigned int		cmd,
			       unsigned int		cmd,
			       iw_handler		handler)
			       iw_handler		handler)
{
{
	struct iwreq *				iwr = (struct iwreq *) ifr;
	const struct iw_ioctl_description *	descr;
	const struct iw_ioctl_description *	descr;
	struct iw_request_info			info;
	struct iw_request_info			info;
	int					ret = -EINVAL;
	int					ret = -EINVAL;
@@ -984,10 +983,9 @@ static int ioctl_private_iw_point(struct iw_point *iwp, unsigned int cmd,
	return err;
	return err;
}
}


static int ioctl_private_call(struct net_device *dev, struct ifreq *ifr,
static int ioctl_private_call(struct net_device *dev, struct iwreq *iwr,
			      unsigned int cmd, iw_handler handler)
			      unsigned int cmd, iw_handler handler)
{
{
	struct iwreq *iwr = (struct iwreq *) ifr;
	int extra_size = 0, ret = -EINVAL;
	int extra_size = 0, ret = -EINVAL;
	const struct iw_priv_args *descr;
	const struct iw_priv_args *descr;
	struct iw_request_info info;
	struct iw_request_info info;
@@ -1015,7 +1013,7 @@ static int ioctl_private_call(struct net_device *dev, struct ifreq *ifr,
}
}


/* ---------------------------------------------------------------- */
/* ---------------------------------------------------------------- */
typedef int (*wext_ioctl_func)(struct net_device *, struct ifreq *,
typedef int (*wext_ioctl_func)(struct net_device *, struct iwreq *,
			       unsigned int, iw_handler);
			       unsigned int, iw_handler);


/*
/*
@@ -1027,6 +1025,7 @@ static int wireless_process_ioctl(struct net *net, struct ifreq *ifr,
				  wext_ioctl_func standard,
				  wext_ioctl_func standard,
				  wext_ioctl_func private)
				  wext_ioctl_func private)
{
{
	struct iwreq *iwr = (struct iwreq *) ifr;
	struct net_device *dev;
	struct net_device *dev;
	iw_handler	handler;
	iw_handler	handler;


@@ -1041,11 +1040,11 @@ static int wireless_process_ioctl(struct net *net, struct ifreq *ifr,
	 * Note that 'cmd' is already filtered in dev_ioctl() with
	 * Note that 'cmd' is already filtered in dev_ioctl() with
	 * (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) */
	 * (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) */
	if (cmd == SIOCGIWSTATS)
	if (cmd == SIOCGIWSTATS)
		return standard(dev, ifr, cmd,
		return standard(dev, iwr, cmd,
				&iw_handler_get_iwstats);
				&iw_handler_get_iwstats);


	if (cmd == SIOCGIWPRIV && dev->wireless_handlers)
	if (cmd == SIOCGIWPRIV && dev->wireless_handlers)
		return standard(dev, ifr, cmd,
		return standard(dev, iwr, cmd,
				&iw_handler_get_private);
				&iw_handler_get_private);


	/* Basic check */
	/* Basic check */
@@ -1057,9 +1056,9 @@ static int wireless_process_ioctl(struct net *net, struct ifreq *ifr,
	if (handler) {
	if (handler) {
		/* Standard and private are not the same */
		/* Standard and private are not the same */
		if (cmd < SIOCIWFIRSTPRIV)
		if (cmd < SIOCIWFIRSTPRIV)
			return standard(dev, ifr, cmd, handler);
			return standard(dev, iwr, cmd, handler);
		else
		else
			return private(dev, ifr, cmd, handler);
			return private(dev, iwr, cmd, handler);
	}
	}
	/* Old driver API : call driver ioctl handler */
	/* Old driver API : call driver ioctl handler */
	if (dev->do_ioctl)
	if (dev->do_ioctl)