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

Commit b5e5fa5e authored by Christoph Hellwig's avatar Christoph Hellwig Committed by David S. Miller
Browse files

[NET]: Add a dev_ioctl() fallback to sock_ioctl()



Currently all network protocols need to call dev_ioctl as the default
fallback in their ioctl implementations.  This patch adds a fallback
to dev_ioctl to sock_ioctl if the protocol returned -ENOIOCTLCMD.
This way all the procotol ioctl handlers can be simplified and we don't
need to export dev_ioctl.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 5ff7630e
Loading
Loading
Loading
Loading
+1 −18
Original line number Diff line number Diff line
@@ -1763,7 +1763,7 @@ static int atalk_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr
 */
static int atalk_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
{
	int rc = -EINVAL;
	int rc = -ENOIOCTLCMD;
	struct sock *sk = sock->sk;
	void __user *argp = (void __user *)arg;

@@ -1813,23 +1813,6 @@ static int atalk_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
			rc = atif_ioctl(cmd, argp);
			rtnl_unlock();
			break;
		/* Physical layer ioctl calls */
		case SIOCSIFLINK:
		case SIOCGIFHWADDR:
		case SIOCSIFHWADDR:
		case SIOCGIFFLAGS:
		case SIOCSIFFLAGS:
		case SIOCGIFTXQLEN:
		case SIOCSIFTXQLEN:
		case SIOCGIFMTU:
		case SIOCGIFCONF:
		case SIOCADDMULTI:
		case SIOCDELMULTI:
		case SIOCGIFCOUNT:
		case SIOCGIFINDEX:
		case SIOCGIFNAME:
			rc = dev_ioctl(cmd, argp);
			break;
	}

	return rc;
+1 −1
Original line number Diff line number Diff line
@@ -1827,7 +1827,7 @@ static int ax25_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
		break;

	default:
		res = dev_ioctl(cmd, argp);
		res = -ENOIOCTLCMD;
		break;
	}
	release_sock(sk);
+0 −1
Original line number Diff line number Diff line
@@ -3276,7 +3276,6 @@ EXPORT_SYMBOL(dev_close);
EXPORT_SYMBOL(dev_get_by_flags);
EXPORT_SYMBOL(dev_get_by_index);
EXPORT_SYMBOL(dev_get_by_name);
EXPORT_SYMBOL(dev_ioctl);
EXPORT_SYMBOL(dev_open);
EXPORT_SYMBOL(dev_queue_xmit);
EXPORT_SYMBOL(dev_remove_pack);
+1 −1
Original line number Diff line number Diff line
@@ -1252,7 +1252,7 @@ static int dn_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
		break;

	default:
		err = dev_ioctl(cmd, (void __user *)arg);
		err = -ENOIOCTLCMD;
		break;
	}

+1 −1
Original line number Diff line number Diff line
@@ -687,7 +687,7 @@ static int econet_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg
			break;

		default:
			return dev_ioctl(cmd, argp);
			return -ENOIOCTLCMD;
	}
	/*NOTREACHED*/
	return 0;
Loading