can: make struct proto const
can_ioctl is the only reason for struct proto to be non-const. script/check-patch.pl suggests struct proto be const. Setting the reference to the common can_ioctl() in all CAN protocols directly removes the need to make the struct proto writable in af_can.c Signed-off-by: Kurt Van Dijck <kurt.van.dijck@eia.be> Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
3b261ade42
commit
53914b6799
@@ -38,7 +38,7 @@
|
|||||||
struct can_proto {
|
struct can_proto {
|
||||||
int type;
|
int type;
|
||||||
int protocol;
|
int protocol;
|
||||||
struct proto_ops *ops;
|
const struct proto_ops *ops;
|
||||||
struct proto *prot;
|
struct proto *prot;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -58,5 +58,6 @@ extern void can_rx_unregister(struct net_device *dev, canid_t can_id,
|
|||||||
void *data);
|
void *data);
|
||||||
|
|
||||||
extern int can_send(struct sk_buff *skb, int loop);
|
extern int can_send(struct sk_buff *skb, int loop);
|
||||||
|
extern int can_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg);
|
||||||
|
|
||||||
#endif /* CAN_CORE_H */
|
#endif /* CAN_CORE_H */
|
||||||
|
@@ -95,7 +95,7 @@ struct s_pstats can_pstats; /* receive list statistics */
|
|||||||
* af_can socket functions
|
* af_can socket functions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int can_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
|
int can_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
struct sock *sk = sock->sk;
|
struct sock *sk = sock->sk;
|
||||||
|
|
||||||
@@ -108,6 +108,7 @@ static int can_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
|
|||||||
return -ENOIOCTLCMD;
|
return -ENOIOCTLCMD;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(can_ioctl);
|
||||||
|
|
||||||
static void can_sock_destruct(struct sock *sk)
|
static void can_sock_destruct(struct sock *sk)
|
||||||
{
|
{
|
||||||
@@ -698,13 +699,9 @@ int can_proto_register(struct can_proto *cp)
|
|||||||
printk(KERN_ERR "can: protocol %d already registered\n",
|
printk(KERN_ERR "can: protocol %d already registered\n",
|
||||||
proto);
|
proto);
|
||||||
err = -EBUSY;
|
err = -EBUSY;
|
||||||
} else {
|
} else
|
||||||
proto_tab[proto] = cp;
|
proto_tab[proto] = cp;
|
||||||
|
|
||||||
/* use generic ioctl function if not defined by module */
|
|
||||||
if (!cp->ops->ioctl)
|
|
||||||
cp->ops->ioctl = can_ioctl;
|
|
||||||
}
|
|
||||||
spin_unlock(&proto_tab_lock);
|
spin_unlock(&proto_tab_lock);
|
||||||
|
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
|
@@ -1569,7 +1569,7 @@ static int bcm_recvmsg(struct kiocb *iocb, struct socket *sock,
|
|||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct proto_ops bcm_ops __read_mostly = {
|
static const struct proto_ops bcm_ops = {
|
||||||
.family = PF_CAN,
|
.family = PF_CAN,
|
||||||
.release = bcm_release,
|
.release = bcm_release,
|
||||||
.bind = sock_no_bind,
|
.bind = sock_no_bind,
|
||||||
@@ -1578,7 +1578,7 @@ static struct proto_ops bcm_ops __read_mostly = {
|
|||||||
.accept = sock_no_accept,
|
.accept = sock_no_accept,
|
||||||
.getname = sock_no_getname,
|
.getname = sock_no_getname,
|
||||||
.poll = datagram_poll,
|
.poll = datagram_poll,
|
||||||
.ioctl = NULL, /* use can_ioctl() from af_can.c */
|
.ioctl = can_ioctl, /* use can_ioctl() from af_can.c */
|
||||||
.listen = sock_no_listen,
|
.listen = sock_no_listen,
|
||||||
.shutdown = sock_no_shutdown,
|
.shutdown = sock_no_shutdown,
|
||||||
.setsockopt = sock_no_setsockopt,
|
.setsockopt = sock_no_setsockopt,
|
||||||
|
@@ -742,7 +742,7 @@ static int raw_recvmsg(struct kiocb *iocb, struct socket *sock,
|
|||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct proto_ops raw_ops __read_mostly = {
|
static const struct proto_ops raw_ops = {
|
||||||
.family = PF_CAN,
|
.family = PF_CAN,
|
||||||
.release = raw_release,
|
.release = raw_release,
|
||||||
.bind = raw_bind,
|
.bind = raw_bind,
|
||||||
@@ -751,7 +751,7 @@ static struct proto_ops raw_ops __read_mostly = {
|
|||||||
.accept = sock_no_accept,
|
.accept = sock_no_accept,
|
||||||
.getname = raw_getname,
|
.getname = raw_getname,
|
||||||
.poll = datagram_poll,
|
.poll = datagram_poll,
|
||||||
.ioctl = NULL, /* use can_ioctl() from af_can.c */
|
.ioctl = can_ioctl, /* use can_ioctl() from af_can.c */
|
||||||
.listen = sock_no_listen,
|
.listen = sock_no_listen,
|
||||||
.shutdown = sock_no_shutdown,
|
.shutdown = sock_no_shutdown,
|
||||||
.setsockopt = raw_setsockopt,
|
.setsockopt = raw_setsockopt,
|
||||||
|
Reference in New Issue
Block a user