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

Commit 17ba15fb authored by David S. Miller's avatar David S. Miller
Browse files

[PPPOX]: Fix assignment into const proto_ops.



And actually, with this, the whole pppox layer can basically
be removed and subsumed into pppoe.c, no other pppox sub-protocol
implementation exists and we've had this thing for at least 4
years.

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 8639a11e
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -85,7 +85,7 @@ static int pppoe_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
static int pppoe_xmit(struct ppp_channel *chan, struct sk_buff *skb);
static int __pppoe_xmit(struct sock *sk, struct sk_buff *skb);

static struct proto_ops pppoe_ops;
static const struct proto_ops pppoe_ops;
static DEFINE_RWLOCK(pppoe_hash_lock);

static struct ppp_channel_ops pppoe_chan_ops;
@@ -1063,9 +1063,7 @@ static int __init pppoe_proc_init(void)
static inline int pppoe_proc_init(void) { return 0; }
#endif /* CONFIG_PROC_FS */

/* ->ioctl are set at pppox_create */

static struct proto_ops pppoe_ops = {
static const struct proto_ops pppoe_ops = {
    .family		= AF_PPPOX,
    .owner		= THIS_MODULE,
    .release		= pppoe_release,
@@ -1081,7 +1079,8 @@ static struct proto_ops pppoe_ops = {
    .getsockopt		= sock_no_getsockopt,
    .sendmsg		= pppoe_sendmsg,
    .recvmsg		= pppoe_recvmsg,
    .mmap		= sock_no_mmap
    .mmap		= sock_no_mmap,
    .ioctl		= pppox_ioctl,
};

static struct pppox_proto pppoe_proto = {
+3 −7
Original line number Diff line number Diff line
@@ -68,8 +68,7 @@ EXPORT_SYMBOL(register_pppox_proto);
EXPORT_SYMBOL(unregister_pppox_proto);
EXPORT_SYMBOL(pppox_unbind_sock);

static int pppox_ioctl(struct socket* sock, unsigned int cmd, 
		       unsigned long arg)
int pppox_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
{
	struct sock *sk = sock->sk;
	struct pppox_sock *po = pppox_sk(sk);
@@ -105,6 +104,7 @@ static int pppox_ioctl(struct socket* sock, unsigned int cmd,
	return rc;
}

EXPORT_SYMBOL(pppox_ioctl);

static int pppox_create(struct socket *sock, int protocol)
{
@@ -119,11 +119,7 @@ static int pppox_create(struct socket *sock, int protocol)
		goto out;

	rc = pppox_protos[protocol]->create(sock);
	if (!rc) {
		/* We get to set the ioctl handler. */
		/* For everything else, pppox is just a shell. */
		sock->ops->ioctl = pppox_ioctl;
	}

	module_put(pppox_protos[protocol]->owner);
out:
	return rc;
+1 −2
Original line number Diff line number Diff line
@@ -157,8 +157,7 @@ struct pppox_proto {
extern int register_pppox_proto(int proto_num, struct pppox_proto *pp);
extern void unregister_pppox_proto(int proto_num);
extern void pppox_unbind_sock(struct sock *sk);/* delete ppp-channel binding */
extern int pppox_channel_ioctl(struct ppp_channel *pc, unsigned int cmd,
			       unsigned long arg);
extern int pppox_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg);

/* PPPoX socket states */
enum {