Re: [PATCH 1/4] Inconsistent extern declarations.

Alexey Dobriyan
2006-08-24T16:13:57Z

On Thu, Aug 24, 2006 at 04:25:18PM +0100, David Woodhouse wrote:
> When you compile multiple files together with --combine, the compiler
> starts to _notice_ when you do things like this in one file:
>
> extern int ipxrtr_route_packet(struct sock *sk, struct sockaddr_ipx *usipx,
> struct iovec *iov, int len, int noblock);
>
> .. but the actual function looks like this:
>
> extern int ipxrtr_route_packet(struct sock *sk, struct sockaddr_ipx *usipx,
> struct iovec *iov, size_t len, int noblock);

El-cheapo bug-finder, good. ;-)

> --- a/net/ipx/af_ipx.c
> +++ b/net/ipx/af_ipx.c
> @@ -87,7 +87,7 @@ extern int ipxrtr_add_route(__u32 networ
> unsigned char *node);
> extern void ipxrtr_del_routes(struct ipx_interface *intrfc);
> extern int ipxrtr_route_packet(struct sock *sk, struct sockaddr_ipx *usipx,
> - struct iovec *iov, int len, int noblock);
> + struct iovec *iov, size_t len, int noblock);

Better move proto to include/net/ipx.h since net/ipx/af_ipx.c already
including it.

In general, this patch is wrong. Every external declaration and every
proto should be in only one place.