[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: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
8639a11e23
commit
17ba15fb62
|
@ -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 ppp_channel *chan, struct sk_buff *skb);
|
||||||
static int __pppoe_xmit(struct sock *sk, 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 DEFINE_RWLOCK(pppoe_hash_lock);
|
||||||
|
|
||||||
static struct ppp_channel_ops pppoe_chan_ops;
|
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; }
|
static inline int pppoe_proc_init(void) { return 0; }
|
||||||
#endif /* CONFIG_PROC_FS */
|
#endif /* CONFIG_PROC_FS */
|
||||||
|
|
||||||
/* ->ioctl are set at pppox_create */
|
static const struct proto_ops pppoe_ops = {
|
||||||
|
|
||||||
static struct proto_ops pppoe_ops = {
|
|
||||||
.family = AF_PPPOX,
|
.family = AF_PPPOX,
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.release = pppoe_release,
|
.release = pppoe_release,
|
||||||
|
@ -1081,7 +1079,8 @@ static struct proto_ops pppoe_ops = {
|
||||||
.getsockopt = sock_no_getsockopt,
|
.getsockopt = sock_no_getsockopt,
|
||||||
.sendmsg = pppoe_sendmsg,
|
.sendmsg = pppoe_sendmsg,
|
||||||
.recvmsg = pppoe_recvmsg,
|
.recvmsg = pppoe_recvmsg,
|
||||||
.mmap = sock_no_mmap
|
.mmap = sock_no_mmap,
|
||||||
|
.ioctl = pppox_ioctl,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct pppox_proto pppoe_proto = {
|
static struct pppox_proto pppoe_proto = {
|
||||||
|
|
|
@ -68,8 +68,7 @@ EXPORT_SYMBOL(register_pppox_proto);
|
||||||
EXPORT_SYMBOL(unregister_pppox_proto);
|
EXPORT_SYMBOL(unregister_pppox_proto);
|
||||||
EXPORT_SYMBOL(pppox_unbind_sock);
|
EXPORT_SYMBOL(pppox_unbind_sock);
|
||||||
|
|
||||||
static int pppox_ioctl(struct socket* sock, unsigned int cmd,
|
int pppox_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
|
||||||
unsigned long arg)
|
|
||||||
{
|
{
|
||||||
struct sock *sk = sock->sk;
|
struct sock *sk = sock->sk;
|
||||||
struct pppox_sock *po = pppox_sk(sk);
|
struct pppox_sock *po = pppox_sk(sk);
|
||||||
|
@ -105,6 +104,7 @@ static int pppox_ioctl(struct socket* sock, unsigned int cmd,
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EXPORT_SYMBOL(pppox_ioctl);
|
||||||
|
|
||||||
static int pppox_create(struct socket *sock, int protocol)
|
static int pppox_create(struct socket *sock, int protocol)
|
||||||
{
|
{
|
||||||
|
@ -119,11 +119,7 @@ static int pppox_create(struct socket *sock, int protocol)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
rc = pppox_protos[protocol]->create(sock);
|
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);
|
module_put(pppox_protos[protocol]->owner);
|
||||||
out:
|
out:
|
||||||
return rc;
|
return rc;
|
||||||
|
|
|
@ -157,8 +157,7 @@ struct pppox_proto {
|
||||||
extern int register_pppox_proto(int proto_num, struct pppox_proto *pp);
|
extern int register_pppox_proto(int proto_num, struct pppox_proto *pp);
|
||||||
extern void unregister_pppox_proto(int proto_num);
|
extern void unregister_pppox_proto(int proto_num);
|
||||||
extern void pppox_unbind_sock(struct sock *sk);/* delete ppp-channel binding */
|
extern void pppox_unbind_sock(struct sock *sk);/* delete ppp-channel binding */
|
||||||
extern int pppox_channel_ioctl(struct ppp_channel *pc, unsigned int cmd,
|
extern int pppox_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg);
|
||||||
unsigned long arg);
|
|
||||||
|
|
||||||
/* PPPoX socket states */
|
/* PPPoX socket states */
|
||||||
enum {
|
enum {
|
||||||
|
|
Loading…
Reference in New Issue