Commit 7b7ed885 authored by Bart Van Assche's avatar Bart Van Assche Committed by David S. Miller
Browse files

net/core: Allow the compiler to verify declaration and definition consistency



Instead of declaring a function in a .c file, declare it in a header
file and include that header file from the source files that define
and that use the function. That allows the compiler to verify
consistency of declaration and definition. See also commit
52267790 ("sock: add MSG_ZEROCOPY") # v4.14.

Cc: Willem de Bruijn <willemb@google.com>
Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent a986967e
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -61,6 +61,8 @@
#include <trace/events/skb.h>
#include <trace/events/skb.h>
#include <net/busy_poll.h>
#include <net/busy_poll.h>


#include "datagram.h"

/*
/*
 *	Is a socket 'connection oriented' ?
 *	Is a socket 'connection oriented' ?
 */
 */

net/core/datagram.h

0 → 100644
+15 −0
Original line number Original line Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0 */

#ifndef _NET_CORE_DATAGRAM_H_
#define _NET_CORE_DATAGRAM_H_

#include <linux/types.h>

struct sock;
struct sk_buff;
struct iov_iter;

int __zerocopy_sg_from_iter(struct sock *sk, struct sk_buff *skb,
			    struct iov_iter *from, size_t length);

#endif /* _NET_CORE_DATAGRAM_H_ */
+2 −3
Original line number Original line Diff line number Diff line
@@ -77,6 +77,8 @@
#include <linux/capability.h>
#include <linux/capability.h>
#include <linux/user_namespace.h>
#include <linux/user_namespace.h>


#include "datagram.h"

struct kmem_cache *skbuff_head_cache __ro_after_init;
struct kmem_cache *skbuff_head_cache __ro_after_init;
static struct kmem_cache *skbuff_fclone_cache __ro_after_init;
static struct kmem_cache *skbuff_fclone_cache __ro_after_init;
#ifdef CONFIG_SKB_EXTENSIONS
#ifdef CONFIG_SKB_EXTENSIONS
@@ -1105,9 +1107,6 @@ void sock_zerocopy_put_abort(struct ubuf_info *uarg, bool have_uref)
}
}
EXPORT_SYMBOL_GPL(sock_zerocopy_put_abort);
EXPORT_SYMBOL_GPL(sock_zerocopy_put_abort);


extern int __zerocopy_sg_from_iter(struct sock *sk, struct sk_buff *skb,
				   struct iov_iter *from, size_t length);

int skb_zerocopy_iter_dgram(struct sk_buff *skb, struct msghdr *msg, int len)
int skb_zerocopy_iter_dgram(struct sk_buff *skb, struct msghdr *msg, int len)
{
{
	return __zerocopy_sg_from_iter(skb->sk, skb, &msg->msg_iter, len);
	return __zerocopy_sg_from_iter(skb->sk, skb, &msg->msg_iter, len);