diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 3e6b53b981a081870077db8b7324d3ca08d8015d..ab71b41e139442691ac14df5a6183c0b35a2d2d3 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -928,6 +928,8 @@ struct dst_entry * ip6_route_output(struct net *net, const struct sock *sk,
 {
 	int flags = 0;
 
+	fl6->flowi6_iif = net->loopback_dev->ifindex;
+
 	if ((sk && sk->sk_bound_dev_if) || rt6_need_strict(&fl6->daddr))
 		flags |= RT6_LOOKUP_F_IFACE;