diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
index 38390dd19636f9f34b2bb3ac4e25b66106ee0a18..84b1a296eecb3723cc0ddd79982aaf9ff1539f40 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -793,6 +793,9 @@ int udpv6_sendmsg(struct kiocb *iocb, struct sock *sk,
 	if (!fl.oif)
 		fl.oif = sk->sk_bound_dev_if;
 
+	if (!fl.oif)
+		fl.oif = np->sticky_pktinfo.ipi6_ifindex;
+
 	if (msg->msg_controllen) {
 		opt = &opt_space;
 		memset(opt, 0, sizeof(struct ipv6_txoptions));