Re: [RFC 2.6.10 3/22] xfrm: Add offload management routines
From: "David S. Miller" <davem@davemloft.net>
Date: 2005-01-21 22:50:22
Also in:
lkml
From: "David S. Miller" <davem@davemloft.net>
Date: 2005-01-21 22:50:22
Also in:
lkml
On Thu, 30 Dec 2004 03:48:35 -0500 David Dillow [off-list ref] wrote:
+static inline struct xfrm_offload * +xfrm_offload_alloc(int sizeof_priv, struct net_device *dev)
This whole scheme looks buggy. The intent is to 8-byte align the object, but look at what the code is actually doing. Whatever kmalloc() returns to xfrm_offload_alloc() is directly used as the xfrm_offload pointer, and the members are initialized. Then xfrm_offload_priv() does the alignments. It is clear that kmalloc() is always giving you 8-byte aligned data else the first time xfrm_offload_priv() is used you'd get a bogus pointer since xfrm_offload_alloc() initialized the object without first aligning the pointer. We do something similar when we allocate netdevs, so have a look at how net/core/dev.c:alloc_netdev() works.