xfrm4_policy.c (de3cb747ffac5f2a4a6bb156e7e2fd5229e688e5) xfrm4_policy.c (2774c7aba6c97a2535be3309a2209770953780b3)
1/*
2 * xfrm4_policy.c
3 *
4 * Changes:
5 * Kazunori MIYAZAWA @USAGI
6 * YOSHIFUJI Hideaki @USAGI
7 * Split up af-specific portion
8 *

--- 292 unchanged lines hidden (view full) ---

301{
302 struct xfrm_dst *xdst;
303
304 if (!unregister)
305 return;
306
307 xdst = (struct xfrm_dst *)dst;
308 if (xdst->u.rt.idev->dev == dev) {
1/*
2 * xfrm4_policy.c
3 *
4 * Changes:
5 * Kazunori MIYAZAWA @USAGI
6 * YOSHIFUJI Hideaki @USAGI
7 * Split up af-specific portion
8 *

--- 292 unchanged lines hidden (view full) ---

301{
302 struct xfrm_dst *xdst;
303
304 if (!unregister)
305 return;
306
307 xdst = (struct xfrm_dst *)dst;
308 if (xdst->u.rt.idev->dev == dev) {
309 struct in_device *loopback_idev = in_dev_get(loopback_dev);
309 struct in_device *loopback_idev = in_dev_get(init_net.loopback_dev);
310 BUG_ON(!loopback_idev);
311
312 do {
313 in_dev_put(xdst->u.rt.idev);
314 xdst->u.rt.idev = loopback_idev;
315 in_dev_hold(loopback_idev);
316 xdst = (struct xfrm_dst *)xdst->u.dst.child;
317 } while (xdst->u.dst.xfrm);

--- 44 unchanged lines hidden ---
310 BUG_ON(!loopback_idev);
311
312 do {
313 in_dev_put(xdst->u.rt.idev);
314 xdst->u.rt.idev = loopback_idev;
315 in_dev_hold(loopback_idev);
316 xdst = (struct xfrm_dst *)xdst->u.dst.child;
317 } while (xdst->u.dst.xfrm);

--- 44 unchanged lines hidden ---