diff --git a/net/core/netfilter.c b/net/core/netfilter.c
index d132da324705316d8f3bb81894a51ae0694a6c94..04bbe3a4d62f49580f1593a4a7a20ce2b561916c 100644
--- a/net/core/netfilter.c
+++ b/net/core/netfilter.c
@@ -636,6 +636,7 @@ int ip_route_me_harder(struct sk_buff **pskb)
 #ifdef CONFIG_IP_ROUTE_FWMARK
 		fl.nl_u.ip4_u.fwmark = (*pskb)->nfmark;
 #endif
+		fl.proto = iph->protocol;
 		if (ip_route_output_key(&rt, &fl) != 0)
 			return -1;