diff options
-rw-r--r-- | net/xfrm/xfrm_policy.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c index 95271e8426a1..d0882e53b6fc 100644 --- a/net/xfrm/xfrm_policy.c +++ b/net/xfrm/xfrm_policy.c | |||
@@ -796,6 +796,10 @@ struct xfrm_policy *xfrm_policy_byid(u8 type, int dir, u32 id, int delete, | |||
796 | struct hlist_head *chain; | 796 | struct hlist_head *chain; |
797 | struct hlist_node *entry; | 797 | struct hlist_node *entry; |
798 | 798 | ||
799 | *err = -ENOENT; | ||
800 | if (xfrm_policy_id2dir(id) != dir) | ||
801 | return NULL; | ||
802 | |||
799 | *err = 0; | 803 | *err = 0; |
800 | write_lock_bh(&xfrm_policy_lock); | 804 | write_lock_bh(&xfrm_policy_lock); |
801 | chain = xfrm_policy_byidx + idx_hash(id); | 805 | chain = xfrm_policy_byidx + idx_hash(id); |