* using sock_common_setsockopt Signed-off-by: Aristeu Sergio Rozanski Filho Index: net/x25/x25_proto.c =================================================================== --- net/x25/x25_proto.c (revision 33) +++ net/x25/x25_proto.c (revision 34) @@ -10,9 +10,40 @@ * History * 2004-08-09 Aristeu S. Rozanski F. created */ +#include +#include +#include +#include +#include +#include +#include +#include +static int x25_proto_setsockopt(struct sock *sk, int level, int optname, + char __user *optval, int optlen) +{ + int opt; + int rc = -ENOPROTOOPT; + + if (level != SOL_X25 || optname != X25_QBITINCL) + goto out; + + rc = -EINVAL; + if (optlen < sizeof(int)) + goto out; + + rc = -EFAULT; + if (get_user(opt, (int __user *)optval)) + goto out; + + x25_sk(sk)->qbitincl = !!opt; + rc = 0; +out: + return rc; +} struct proto x25_prot = { .name = "X25", + .setsockopt = x25_proto_setsockopt, }; EXPORT_SYMBOL(x25_prot); Index: net/x25/af_x25.c =================================================================== --- net/x25/af_x25.c (revision 33) +++ net/x25/af_x25.c (revision 34) @@ -364,30 +364,6 @@ * X.25 socket object. */ -static int x25_setsockopt(struct socket *sock, int level, int optname, - char __user *optval, int optlen) -{ - int opt; - struct sock *sk = sock->sk; - int rc = -ENOPROTOOPT; - - if (level != SOL_X25 || optname != X25_QBITINCL) - goto out; - - rc = -EINVAL; - if (optlen < sizeof(int)) - goto out; - - rc = -EFAULT; - if (get_user(opt, (int __user *)optval)) - goto out; - - x25_sk(sk)->qbitincl = !!opt; - rc = 0; -out: - return rc; -} - static int x25_getsockopt(struct socket *sock, int level, int optname, char __user *optval, int __user *optlen) { @@ -1337,7 +1313,7 @@ .ioctl = x25_ioctl, .listen = x25_listen, .shutdown = sock_no_shutdown, - .setsockopt = x25_setsockopt, + .setsockopt = sock_common_setsockopt, .getsockopt = x25_getsockopt, .sendmsg = x25_sendmsg, .recvmsg = x25_recvmsg,