Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 160eb5a6 authored by David S. Miller's avatar David S. Miller
Browse files

ipv4: Kill early demux method return value.



It's completely unnecessary.

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 1d1e34dd
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@

/* This is used to register protocols. */
struct net_protocol {
	int			(*early_demux)(struct sk_buff *skb);
	void			(*early_demux)(struct sk_buff *skb);
	int			(*handler)(struct sk_buff *skb);
	void			(*err_handler)(struct sk_buff *skb, u32 info);
	int			(*gso_send_check)(struct sk_buff *skb);
+1 −1
Original line number Diff line number Diff line
@@ -325,7 +325,7 @@ extern void tcp_v4_err(struct sk_buff *skb, u32);

extern void tcp_shutdown (struct sock *sk, int how);

extern int tcp_v4_early_demux(struct sk_buff *skb);
extern void tcp_v4_early_demux(struct sk_buff *skb);
extern int tcp_v4_rcv(struct sk_buff *skb);

extern struct inet_peer *tcp_v4_get_peer(struct sock *sk);
+19 −23
Original line number Diff line number Diff line
@@ -320,26 +320,23 @@ static int ip_rcv_finish(struct sk_buff *skb)
	const struct iphdr *iph = ip_hdr(skb);
	struct rtable *rt;

	/*
	 *	Initialise the virtual path cache for the packet. It describes
	 *	how the packet travels inside Linux networking.
	 */
	if (skb_dst(skb) == NULL) {
		int err = -ENOENT;

		if (sysctl_ip_early_demux) {
	if (sysctl_ip_early_demux && !skb_dst(skb)) {
		const struct net_protocol *ipprot;
		int protocol = iph->protocol;

		rcu_read_lock();
		ipprot = rcu_dereference(inet_protos[protocol]);
		if (ipprot && ipprot->early_demux)
				err = ipprot->early_demux(skb);
			ipprot->early_demux(skb);
		rcu_read_unlock();
	}

		if (err) {
			err = ip_route_input_noref(skb, iph->daddr, iph->saddr,
	/*
	 *	Initialise the virtual path cache for the packet. It describes
	 *	how the packet travels inside Linux networking.
	 */
	if (!skb_dst(skb)) {
		int err = ip_route_input_noref(skb, iph->daddr, iph->saddr,
					       iph->tos, skb->dev);
		if (unlikely(err)) {
			if (err == -EXDEV)
@@ -348,7 +345,6 @@ static int ip_rcv_finish(struct sk_buff *skb)
			goto drop;
		}
	}
	}

#ifdef CONFIG_IP_ROUTE_CLASSID
	if (unlikely(skb_dst(skb)->tclassid)) {
+6 −13
Original line number Diff line number Diff line
@@ -1673,30 +1673,28 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
}
EXPORT_SYMBOL(tcp_v4_do_rcv);

int tcp_v4_early_demux(struct sk_buff *skb)
void tcp_v4_early_demux(struct sk_buff *skb)
{
	struct net *net = dev_net(skb->dev);
	const struct iphdr *iph;
	const struct tcphdr *th;
	struct net_device *dev;
	struct sock *sk;
	int err;

	err = -ENOENT;
	if (skb->pkt_type != PACKET_HOST)
		goto out_err;
		return;

	if (!pskb_may_pull(skb, ip_hdrlen(skb) + sizeof(struct tcphdr)))
		goto out_err;
		return;

	iph = ip_hdr(skb);
	th = (struct tcphdr *) ((char *)iph + ip_hdrlen(skb));

	if (th->doff < sizeof(struct tcphdr) / 4)
		goto out_err;
		return;

	if (!pskb_may_pull(skb, ip_hdrlen(skb) + th->doff * 4))
		goto out_err;
		return;

	dev = skb->dev;
	sk = __inet_lookup_established(net, &tcp_hashinfo,
@@ -1713,16 +1711,11 @@ int tcp_v4_early_demux(struct sk_buff *skb)
			if (dst) {
				struct rtable *rt = (struct rtable *) dst;

				if (rt->rt_iif == dev->ifindex) {
				if (rt->rt_iif == dev->ifindex)
					skb_dst_set_noref(skb, dst);
					err = 0;
				}
			}
		}
	}

out_err:
	return err;
}

/*