diff options
Diffstat (limited to 'fs')
| -rw-r--r-- | fs/afs/rxrpc.c | 6 | ||||
| -rw-r--r-- | fs/cifs/connect.c | 10 | ||||
| -rw-r--r-- | fs/cifs/transport.c | 8 | ||||
| -rw-r--r-- | fs/dcache.c | 2 | ||||
| -rw-r--r-- | fs/dlm/lowcomms.c | 177 | ||||
| -rw-r--r-- | fs/drop_caches.c | 2 | ||||
| -rw-r--r-- | fs/file_table.c | 4 | ||||
| -rw-r--r-- | fs/fscache/main.c | 3 | ||||
| -rw-r--r-- | fs/inode.c | 2 | ||||
| -rw-r--r-- | fs/ocfs2/cluster/tcp.c | 42 | ||||
| -rw-r--r-- | fs/proc/proc_net.c | 19 | ||||
| -rw-r--r-- | fs/proc/proc_sysctl.c | 45 | ||||
| -rw-r--r-- | fs/quota/dquot.c | 2 | ||||
| -rw-r--r-- | fs/xfs/xfs_sysctl.c | 4 | 
14 files changed, 81 insertions, 245 deletions
diff --git a/fs/afs/rxrpc.c b/fs/afs/rxrpc.c index 1ecc67da6c1a..e313dae01674 100644 --- a/fs/afs/rxrpc.c +++ b/fs/afs/rxrpc.c @@ -37,7 +37,6 @@ int afs_open_socket(struct afs_net *net)  {  	struct sockaddr_rxrpc srx;  	struct socket *socket; -	unsigned int min_level;  	int ret;  	_enter(""); @@ -57,9 +56,8 @@ int afs_open_socket(struct afs_net *net)  	srx.transport.sin6.sin6_family	= AF_INET6;  	srx.transport.sin6.sin6_port	= htons(AFS_CM_PORT); -	min_level = RXRPC_SECURITY_ENCRYPT; -	ret = kernel_setsockopt(socket, SOL_RXRPC, RXRPC_MIN_SECURITY_LEVEL, -				(void *)&min_level, sizeof(min_level)); +	ret = rxrpc_sock_set_min_security_level(socket->sk, +						RXRPC_SECURITY_ENCRYPT);  	if (ret < 0)  		goto error_2; diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index 28268ed461b8..ad8fb53b3682 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c @@ -3929,14 +3929,8 @@ generic_ip_connect(struct TCP_Server_Info *server)  			socket->sk->sk_rcvbuf = 140 * 1024;  	} -	if (server->tcp_nodelay) { -		int val = 1; -		rc = kernel_setsockopt(socket, SOL_TCP, TCP_NODELAY, -				(char *)&val, sizeof(val)); -		if (rc) -			cifs_dbg(FYI, "set TCP_NODELAY socket option error %d\n", -				 rc); -	} +	if (server->tcp_nodelay) +		tcp_sock_set_nodelay(socket->sk);  	cifs_dbg(FYI, "sndbuf %d rcvbuf %d rcvtimeo 0x%lx\n",  		 socket->sk->sk_sndbuf, diff --git a/fs/cifs/transport.c b/fs/cifs/transport.c index c97570eb2c18..99760063e000 100644 --- a/fs/cifs/transport.c +++ b/fs/cifs/transport.c @@ -325,7 +325,6 @@ __smb_send_rqst(struct TCP_Server_Info *server, int num_rqst,  	size_t total_len = 0, sent, size;  	struct socket *ssocket = server->ssocket;  	struct msghdr smb_msg; -	int val = 1;  	__be32 rfc1002_marker;  	if (cifs_rdma_enabled(server)) { @@ -345,8 +344,7 @@ __smb_send_rqst(struct TCP_Server_Info *server, int num_rqst,  	}  	/* cork the socket */ -	kernel_setsockopt(ssocket, SOL_TCP, TCP_CORK, -				(char *)&val, sizeof(val)); +	tcp_sock_set_cork(ssocket->sk, true);  	for (j = 0; j < num_rqst; j++)  		send_length += smb_rqst_len(server, &rqst[j]); @@ -435,9 +433,7 @@ unmask:  	}  	/* uncork it */ -	val = 0; -	kernel_setsockopt(ssocket, SOL_TCP, TCP_CORK, -				(char *)&val, sizeof(val)); +	tcp_sock_set_cork(ssocket->sk, false);  	if ((total_len > 0) && (total_len != send_length)) {  		cifs_dbg(FYI, "partial send (wanted=%u sent=%zu): terminating session\n", diff --git a/fs/dcache.c b/fs/dcache.c index 0d07fb335b78..361ea7ab30ea 100644 --- a/fs/dcache.c +++ b/fs/dcache.c @@ -165,7 +165,7 @@ static long get_nr_dentry_negative(void)  	return sum < 0 ? 0 : sum;  } -int proc_nr_dentry(struct ctl_table *table, int write, void __user *buffer, +int proc_nr_dentry(struct ctl_table *table, int write, void *buffer,  		   size_t *lenp, loff_t *ppos)  {  	dentry_stat.nr_dentry = get_nr_dentry(); diff --git a/fs/dlm/lowcomms.c b/fs/dlm/lowcomms.c index cdfaf4f0e11a..3543a8fec907 100644 --- a/fs/dlm/lowcomms.c +++ b/fs/dlm/lowcomms.c @@ -724,7 +724,7 @@ out_close:  }  /* Listening socket is busy, accept a connection */ -static int tcp_accept_from_sock(struct connection *con) +static int accept_from_sock(struct connection *con)  {  	int result;  	struct sockaddr_storage peeraddr; @@ -852,123 +852,6 @@ accept_err:  	return result;  } -static int sctp_accept_from_sock(struct connection *con) -{ -	/* Check that the new node is in the lockspace */ -	struct sctp_prim prim; -	int nodeid; -	int prim_len, ret; -	int addr_len; -	struct connection *newcon; -	struct connection *addcon; -	struct socket *newsock; - -	mutex_lock(&connections_lock); -	if (!dlm_allow_conn) { -		mutex_unlock(&connections_lock); -		return -1; -	} -	mutex_unlock(&connections_lock); - -	mutex_lock_nested(&con->sock_mutex, 0); - -	ret = kernel_accept(con->sock, &newsock, O_NONBLOCK); -	if (ret < 0) -		goto accept_err; - -	memset(&prim, 0, sizeof(struct sctp_prim)); -	prim_len = sizeof(struct sctp_prim); - -	ret = kernel_getsockopt(newsock, IPPROTO_SCTP, SCTP_PRIMARY_ADDR, -				(char *)&prim, &prim_len); -	if (ret < 0) { -		log_print("getsockopt/sctp_primary_addr failed: %d", ret); -		goto accept_err; -	} - -	make_sockaddr(&prim.ssp_addr, 0, &addr_len); -	ret = addr_to_nodeid(&prim.ssp_addr, &nodeid); -	if (ret) { -		unsigned char *b = (unsigned char *)&prim.ssp_addr; - -		log_print("reject connect from unknown addr"); -		print_hex_dump_bytes("ss: ", DUMP_PREFIX_NONE, -				     b, sizeof(struct sockaddr_storage)); -		goto accept_err; -	} - -	newcon = nodeid2con(nodeid, GFP_NOFS); -	if (!newcon) { -		ret = -ENOMEM; -		goto accept_err; -	} - -	mutex_lock_nested(&newcon->sock_mutex, 1); - -	if (newcon->sock) { -		struct connection *othercon = newcon->othercon; - -		if (!othercon) { -			othercon = kmem_cache_zalloc(con_cache, GFP_NOFS); -			if (!othercon) { -				log_print("failed to allocate incoming socket"); -				mutex_unlock(&newcon->sock_mutex); -				ret = -ENOMEM; -				goto accept_err; -			} -			othercon->nodeid = nodeid; -			othercon->rx_action = receive_from_sock; -			mutex_init(&othercon->sock_mutex); -			INIT_LIST_HEAD(&othercon->writequeue); -			spin_lock_init(&othercon->writequeue_lock); -			INIT_WORK(&othercon->swork, process_send_sockets); -			INIT_WORK(&othercon->rwork, process_recv_sockets); -			set_bit(CF_IS_OTHERCON, &othercon->flags); -		} -		mutex_lock_nested(&othercon->sock_mutex, 2); -		if (!othercon->sock) { -			newcon->othercon = othercon; -			add_sock(newsock, othercon); -			addcon = othercon; -			mutex_unlock(&othercon->sock_mutex); -		} else { -			printk("Extra connection from node %d attempted\n", nodeid); -			ret = -EAGAIN; -			mutex_unlock(&othercon->sock_mutex); -			mutex_unlock(&newcon->sock_mutex); -			goto accept_err; -		} -	} else { -		newcon->rx_action = receive_from_sock; -		add_sock(newsock, newcon); -		addcon = newcon; -	} - -	log_print("connected to %d", nodeid); - -	mutex_unlock(&newcon->sock_mutex); - -	/* -	 * Add it to the active queue in case we got data -	 * between processing the accept adding the socket -	 * to the read_sockets list -	 */ -	if (!test_and_set_bit(CF_READ_PENDING, &addcon->flags)) -		queue_work(recv_workqueue, &addcon->rwork); -	mutex_unlock(&con->sock_mutex); - -	return 0; - -accept_err: -	mutex_unlock(&con->sock_mutex); -	if (newsock) -		sock_release(newsock); -	if (ret != -EAGAIN) -		log_print("error accepting connection from node: %d", ret); - -	return ret; -} -  static void free_entry(struct writequeue_entry *e)  {  	__free_page(e->page); @@ -999,6 +882,7 @@ static void writequeue_entry_complete(struct writequeue_entry *e, int completed)  static int sctp_bind_addrs(struct connection *con, uint16_t port)  {  	struct sockaddr_storage localaddr; +	struct sockaddr *addr = (struct sockaddr *)&localaddr;  	int i, addr_len, result = 0;  	for (i = 0; i < dlm_local_count; i++) { @@ -1006,13 +890,9 @@ static int sctp_bind_addrs(struct connection *con, uint16_t port)  		make_sockaddr(&localaddr, port, &addr_len);  		if (!i) -			result = kernel_bind(con->sock, -					     (struct sockaddr *)&localaddr, -					     addr_len); +			result = kernel_bind(con->sock, addr, addr_len);  		else -			result = kernel_setsockopt(con->sock, SOL_SCTP, -						   SCTP_SOCKOPT_BINDX_ADD, -						   (char *)&localaddr, addr_len); +			result = sock_bind_add(con->sock->sk, addr, addr_len);  		if (result < 0) {  			log_print("Can't bind to %d addr number %d, %d.\n", @@ -1031,11 +911,9 @@ static int sctp_bind_addrs(struct connection *con, uint16_t port)  static void sctp_connect_to_sock(struct connection *con)  {  	struct sockaddr_storage daddr; -	int one = 1;  	int result;  	int addr_len;  	struct socket *sock; -	struct __kernel_sock_timeval tv = { .tv_sec = 5, .tv_usec = 0 };  	if (con->nodeid == 0) {  		log_print("attempt to connect sock 0 foiled"); @@ -1079,21 +957,17 @@ static void sctp_connect_to_sock(struct connection *con)  	log_print("connecting to %d", con->nodeid);  	/* Turn off Nagle's algorithm */ -	kernel_setsockopt(sock, SOL_SCTP, SCTP_NODELAY, (char *)&one, -			  sizeof(one)); +	sctp_sock_set_nodelay(sock->sk);  	/*  	 * Make sock->ops->connect() function return in specified time,  	 * since O_NONBLOCK argument in connect() function does not work here,  	 * then, we should restore the default value of this attribute.  	 */ -	kernel_setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO_NEW, (char *)&tv, -			  sizeof(tv)); +	sock_set_sndtimeo(sock->sk, 5);  	result = sock->ops->connect(sock, (struct sockaddr *)&daddr, addr_len,  				   0); -	memset(&tv, 0, sizeof(tv)); -	kernel_setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO_NEW, (char *)&tv, -			  sizeof(tv)); +	sock_set_sndtimeo(sock->sk, 0);  	if (result == -EINPROGRESS)  		result = 0; @@ -1132,7 +1006,6 @@ static void tcp_connect_to_sock(struct connection *con)  	struct sockaddr_storage saddr, src_addr;  	int addr_len;  	struct socket *sock = NULL; -	int one = 1;  	int result;  	if (con->nodeid == 0) { @@ -1181,8 +1054,7 @@ static void tcp_connect_to_sock(struct connection *con)  	log_print("connecting to %d", con->nodeid);  	/* Turn off Nagle's algorithm */ -	kernel_setsockopt(sock, SOL_TCP, TCP_NODELAY, (char *)&one, -			  sizeof(one)); +	tcp_sock_set_nodelay(sock->sk);  	result = sock->ops->connect(sock, (struct sockaddr *)&saddr, addr_len,  				   O_NONBLOCK); @@ -1224,7 +1096,6 @@ static struct socket *tcp_create_listen_sock(struct connection *con,  {  	struct socket *sock = NULL;  	int result = 0; -	int one = 1;  	int addr_len;  	if (dlm_local_addr[0]->ss_family == AF_INET) @@ -1241,19 +1112,14 @@ static struct socket *tcp_create_listen_sock(struct connection *con,  	}  	/* Turn off Nagle's algorithm */ -	kernel_setsockopt(sock, SOL_TCP, TCP_NODELAY, (char *)&one, -			  sizeof(one)); +	tcp_sock_set_nodelay(sock->sk); -	result = kernel_setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, -				   (char *)&one, sizeof(one)); +	sock_set_reuseaddr(sock->sk); -	if (result < 0) { -		log_print("Failed to set SO_REUSEADDR on socket: %d", result); -	}  	write_lock_bh(&sock->sk->sk_callback_lock);  	sock->sk->sk_user_data = con;  	save_listen_callbacks(sock); -	con->rx_action = tcp_accept_from_sock; +	con->rx_action = accept_from_sock;  	con->connect_action = tcp_connect_to_sock;  	write_unlock_bh(&sock->sk->sk_callback_lock); @@ -1267,11 +1133,7 @@ static struct socket *tcp_create_listen_sock(struct connection *con,  		con->sock = NULL;  		goto create_out;  	} -	result = kernel_setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, -				 (char *)&one, sizeof(one)); -	if (result < 0) { -		log_print("Set keepalive failed: %d", result); -	} +	sock_set_keepalive(sock->sk);  	result = sock->ops->listen(sock, 5);  	if (result < 0) { @@ -1309,8 +1171,6 @@ static int sctp_listen_for_all(void)  	struct socket *sock = NULL;  	int result = -EINVAL;  	struct connection *con = nodeid2con(0, GFP_NOFS); -	int bufsize = NEEDED_RMEM; -	int one = 1;  	if (!con)  		return -ENOMEM; @@ -1324,15 +1184,8 @@ static int sctp_listen_for_all(void)  		goto out;  	} -	result = kernel_setsockopt(sock, SOL_SOCKET, SO_RCVBUFFORCE, -				 (char *)&bufsize, sizeof(bufsize)); -	if (result) -		log_print("Error increasing buffer space on socket %d", result); - -	result = kernel_setsockopt(sock, SOL_SCTP, SCTP_NODELAY, (char *)&one, -				   sizeof(one)); -	if (result < 0) -		log_print("Could not set SCTP NODELAY error %d\n", result); +	sock_set_rcvbuf(sock->sk, NEEDED_RMEM); +	sctp_sock_set_nodelay(sock->sk);  	write_lock_bh(&sock->sk->sk_callback_lock);  	/* Init con struct */ @@ -1340,7 +1193,7 @@ static int sctp_listen_for_all(void)  	save_listen_callbacks(sock);  	con->sock = sock;  	con->sock->sk->sk_data_ready = lowcomms_data_ready; -	con->rx_action = sctp_accept_from_sock; +	con->rx_action = accept_from_sock;  	con->connect_action = sctp_connect_to_sock;  	write_unlock_bh(&sock->sk->sk_callback_lock); diff --git a/fs/drop_caches.c b/fs/drop_caches.c index dc1a1d5d825b..f00fcc4a4f72 100644 --- a/fs/drop_caches.c +++ b/fs/drop_caches.c @@ -47,7 +47,7 @@ static void drop_pagecache_sb(struct super_block *sb, void *unused)  }  int drop_caches_sysctl_handler(struct ctl_table *table, int write, -	void __user *buffer, size_t *length, loff_t *ppos) +		void *buffer, size_t *length, loff_t *ppos)  {  	int ret; diff --git a/fs/file_table.c b/fs/file_table.c index 676e620948d2..656647f9575a 100644 --- a/fs/file_table.c +++ b/fs/file_table.c @@ -80,14 +80,14 @@ EXPORT_SYMBOL_GPL(get_max_files);   */  #if defined(CONFIG_SYSCTL) && defined(CONFIG_PROC_FS)  int proc_nr_files(struct ctl_table *table, int write, -                     void __user *buffer, size_t *lenp, loff_t *ppos) +                     void *buffer, size_t *lenp, loff_t *ppos)  {  	files_stat.nr_files = get_nr_files();  	return proc_doulongvec_minmax(table, write, buffer, lenp, ppos);  }  #else  int proc_nr_files(struct ctl_table *table, int write, -                     void __user *buffer, size_t *lenp, loff_t *ppos) +                     void *buffer, size_t *lenp, loff_t *ppos)  {  	return -ENOSYS;  } diff --git a/fs/fscache/main.c b/fs/fscache/main.c index 59c2494efda3..c1e6cc9091aa 100644 --- a/fs/fscache/main.c +++ b/fs/fscache/main.c @@ -51,8 +51,7 @@ static unsigned fscache_op_max_active = 2;  static struct ctl_table_header *fscache_sysctl_header;  static int fscache_max_active_sysctl(struct ctl_table *table, int write, -				     void __user *buffer, -				     size_t *lenp, loff_t *ppos) +				     void *buffer, size_t *lenp, loff_t *ppos)  {  	struct workqueue_struct **wqp = table->extra1;  	unsigned int *datap = table->data; diff --git a/fs/inode.c b/fs/inode.c index 37226a9cfa4f..9fcec07a9d7c 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -108,7 +108,7 @@ long get_nr_dirty_inodes(void)   */  #ifdef CONFIG_SYSCTL  int proc_nr_inodes(struct ctl_table *table, int write, -		   void __user *buffer, size_t *lenp, loff_t *ppos) +		   void *buffer, size_t *lenp, loff_t *ppos)  {  	inodes_stat.nr_inodes = get_nr_inodes();  	inodes_stat.nr_unused = get_nr_inodes_unused(); diff --git a/fs/ocfs2/cluster/tcp.c b/fs/ocfs2/cluster/tcp.c index 2c512b40a940..79a231719460 100644 --- a/fs/ocfs2/cluster/tcp.c +++ b/fs/ocfs2/cluster/tcp.c @@ -1441,22 +1441,6 @@ static void o2net_rx_until_empty(struct work_struct *work)  	sc_put(sc);  } -static int o2net_set_nodelay(struct socket *sock) -{ -	int val = 1; - -	return kernel_setsockopt(sock, SOL_TCP, TCP_NODELAY, -				    (void *)&val, sizeof(val)); -} - -static int o2net_set_usertimeout(struct socket *sock) -{ -	int user_timeout = O2NET_TCP_USER_TIMEOUT; - -	return kernel_setsockopt(sock, SOL_TCP, TCP_USER_TIMEOUT, -				(void *)&user_timeout, sizeof(user_timeout)); -} -  static void o2net_initialize_handshake(void)  {  	o2net_hand->o2hb_heartbeat_timeout_ms = cpu_to_be32( @@ -1636,17 +1620,8 @@ static void o2net_start_connect(struct work_struct *work)  		goto out;  	} -	ret = o2net_set_nodelay(sc->sc_sock); -	if (ret) { -		mlog(ML_ERROR, "setting TCP_NODELAY failed with %d\n", ret); -		goto out; -	} - -	ret = o2net_set_usertimeout(sock); -	if (ret) { -		mlog(ML_ERROR, "set TCP_USER_TIMEOUT failed with %d\n", ret); -		goto out; -	} +	tcp_sock_set_nodelay(sc->sc_sock->sk); +	tcp_sock_set_user_timeout(sock->sk, O2NET_TCP_USER_TIMEOUT);  	o2net_register_callbacks(sc->sc_sock->sk, sc); @@ -1832,17 +1807,8 @@ static int o2net_accept_one(struct socket *sock, int *more)  	*more = 1;  	new_sock->sk->sk_allocation = GFP_ATOMIC; -	ret = o2net_set_nodelay(new_sock); -	if (ret) { -		mlog(ML_ERROR, "setting TCP_NODELAY failed with %d\n", ret); -		goto out; -	} - -	ret = o2net_set_usertimeout(new_sock); -	if (ret) { -		mlog(ML_ERROR, "set TCP_USER_TIMEOUT failed with %d\n", ret); -		goto out; -	} +	tcp_sock_set_nodelay(new_sock->sk); +	tcp_sock_set_user_timeout(new_sock->sk, O2NET_TCP_USER_TIMEOUT);  	ret = new_sock->ops->getname(new_sock, (struct sockaddr *) &sin, 1);  	if (ret < 0) diff --git a/fs/proc/proc_net.c b/fs/proc/proc_net.c index 4888c5224442..dba63b2429f0 100644 --- a/fs/proc/proc_net.c +++ b/fs/proc/proc_net.c @@ -98,6 +98,25 @@ static const struct proc_ops proc_net_seq_ops = {  	.proc_release	= seq_release_net,  }; +int bpf_iter_init_seq_net(void *priv_data) +{ +#ifdef CONFIG_NET_NS +	struct seq_net_private *p = priv_data; + +	p->net = get_net(current->nsproxy->net_ns); +#endif +	return 0; +} + +void bpf_iter_fini_seq_net(void *priv_data) +{ +#ifdef CONFIG_NET_NS +	struct seq_net_private *p = priv_data; + +	put_net(p->net); +#endif +} +  struct proc_dir_entry *proc_create_net_data(const char *name, umode_t mode,  		struct proc_dir_entry *parent, const struct seq_operations *ops,  		unsigned int state_size, void *data) diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c index b6f5d459b087..df2143e05c57 100644 --- a/fs/proc/proc_sysctl.c +++ b/fs/proc/proc_sysctl.c @@ -539,13 +539,13 @@ out:  	return err;  } -static ssize_t proc_sys_call_handler(struct file *filp, void __user *buf, +static ssize_t proc_sys_call_handler(struct file *filp, void __user *ubuf,  		size_t count, loff_t *ppos, int write)  {  	struct inode *inode = file_inode(filp);  	struct ctl_table_header *head = grab_header(inode);  	struct ctl_table *table = PROC_I(inode)->sysctl_entry; -	void *new_buf = NULL; +	void *kbuf;  	ssize_t error;  	if (IS_ERR(head)) @@ -564,27 +564,38 @@ static ssize_t proc_sys_call_handler(struct file *filp, void __user *buf,  	if (!table->proc_handler)  		goto out; -	error = BPF_CGROUP_RUN_PROG_SYSCTL(head, table, write, buf, &count, -					   ppos, &new_buf); +	if (write) { +		kbuf = memdup_user_nul(ubuf, count); +		if (IS_ERR(kbuf)) { +			error = PTR_ERR(kbuf); +			goto out; +		} +	} else { +		error = -ENOMEM; +		kbuf = kzalloc(count, GFP_KERNEL); +		if (!kbuf) +			goto out; +	} + +	error = BPF_CGROUP_RUN_PROG_SYSCTL(head, table, write, &kbuf, &count, +					   ppos);  	if (error) -		goto out; +		goto out_free_buf;  	/* careful: calling conventions are nasty here */ -	if (new_buf) { -		mm_segment_t old_fs; +	error = table->proc_handler(table, write, kbuf, &count, ppos); +	if (error) +		goto out_free_buf; -		old_fs = get_fs(); -		set_fs(KERNEL_DS); -		error = table->proc_handler(table, write, (void __user *)new_buf, -					    &count, ppos); -		set_fs(old_fs); -		kfree(new_buf); -	} else { -		error = table->proc_handler(table, write, buf, &count, ppos); +	if (!write) { +		error = -EFAULT; +		if (copy_to_user(ubuf, kbuf, count)) +			goto out_free_buf;  	} -	if (!error) -		error = count; +	error = count; +out_free_buf: +	kfree(kbuf);  out:  	sysctl_head_finish(head); diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c index b6a4f692d345..7b4bac91146b 100644 --- a/fs/quota/dquot.c +++ b/fs/quota/dquot.c @@ -2841,7 +2841,7 @@ const struct quotactl_ops dquot_quotactl_sysfile_ops = {  EXPORT_SYMBOL(dquot_quotactl_sysfile_ops);  static int do_proc_dqstats(struct ctl_table *table, int write, -		     void __user *buffer, size_t *lenp, loff_t *ppos) +		     void *buffer, size_t *lenp, loff_t *ppos)  {  	unsigned int type = (unsigned long *)table->data - dqstats.stat;  	s64 value = percpu_counter_sum(&dqstats.counter[type]); diff --git a/fs/xfs/xfs_sysctl.c b/fs/xfs/xfs_sysctl.c index 31b3bdbd2eba..021ef96d0542 100644 --- a/fs/xfs/xfs_sysctl.c +++ b/fs/xfs/xfs_sysctl.c @@ -13,7 +13,7 @@ STATIC int  xfs_stats_clear_proc_handler(  	struct ctl_table	*ctl,  	int			write, -	void			__user *buffer, +	void			*buffer,  	size_t			*lenp,  	loff_t			*ppos)  { @@ -33,7 +33,7 @@ STATIC int  xfs_panic_mask_proc_handler(  	struct ctl_table	*ctl,  	int			write, -	void			__user *buffer, +	void			*buffer,  	size_t			*lenp,  	loff_t			*ppos)  {  | 
