.proto = IPPROTO_GRE,
.fl_gre_key = tunnel->parms.o_key
};
- if (ip_route_output_key(dev_net(dev), &rt, &fl)) {
+ rt = ip_route_output_key(dev_net(dev), &fl);
+ if (IS_ERR(rt)) {
dev->stats.tx_carrier_errors++;
goto tx_error;
}
.proto = IPPROTO_GRE,
.fl_gre_key = tunnel->parms.o_key
};
- struct rtable *rt;
+ struct rtable *rt = ip_route_output_key(dev_net(dev), &fl);
- if (!ip_route_output_key(dev_net(dev), &rt, &fl)) {
+ if (!IS_ERR(rt)) {
tdev = rt->dst.dev;
ip_rt_put(rt);
}
.proto = IPPROTO_GRE,
.fl_gre_key = t->parms.o_key
};
- struct rtable *rt;
+ struct rtable *rt = ip_route_output_key(dev_net(dev), &fl);
- if (ip_route_output_key(dev_net(dev), &rt, &fl))
+ if (IS_ERR(rt))
return -EADDRNOTAVAIL;
dev = rt->dst.dev;
ip_rt_put(rt);