All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michal Ludvig <mludvig@suse.cz>
To: "David S. Miller" <davem@redhat.com>
Cc: netdev@oss.sgi.com
Subject: [PATCH] XFRM policy expire
Date: Tue, 24 Feb 2004 10:09:46 +0100	[thread overview]
Message-ID: <403B14DA.3000700@suse.cz> (raw)

[-- Attachment #1: Type: text/plain, Size: 804 bytes --]

Hi,

the attached patch fixes a bug in xfrm_send_policy_notify(). The space 
allocated in skb must include 'sizeof(struct xfrm_user_polexpire)', not 
'sizeof(struct xfrm_userpolicy_info)' which is shorter. On ia32 it 
worked, probably because of some space gained from aligning. 
Unfortunately on amd64 it didn't and finally led to BUG() & kernel hangup.

Please apply.

BTW The second patch attached does some obvious cleanup: replaces 
RTA_ALIGN(RTA_LENGTH(x)) with RTA_SPACE(x) and ditto for NLMSG_*() 
macros. Apply on top of the first one or drop it. It's up to you.

Michal Ludvig
-- 
SUSE Labs                    mludvig@suse.cz | Cray is the only computer
(+420) 296.545.373        http://www.suse.cz | that runs an endless loop
Personal homepage http://www.logix.cz/michal | in just four hours.

[-- Attachment #2: kernel-xfrm-polexpire.diff --]
[-- Type: text/plain, Size: 611 bytes --]

diff -rup linux-2.6.2.vanilla/net/xfrm/xfrm_user.c linux-2.6.2/net/xfrm/xfrm_user.c
--- linux-2.6.2.vanilla/net/xfrm/xfrm_user.c	2004-02-04 04:43:56.000000000 +0100
+++ linux-2.6.2/net/xfrm/xfrm_user.c	2004-02-24 09:47:42.325888560 +0100
@@ -1153,7 +1153,7 @@ static int xfrm_send_policy_notify(struc
 
 	len = sizeof(struct xfrm_user_tmpl) * xp->xfrm_nr;
 	len = RTA_ALIGN(RTA_LENGTH(len));
-	len += NLMSG_ALIGN(NLMSG_LENGTH(sizeof(struct xfrm_userpolicy_info)));
+	len += NLMSG_ALIGN(NLMSG_LENGTH(sizeof(struct xfrm_user_polexpire)));
 	skb = alloc_skb(len, GFP_ATOMIC);
 	if (skb == NULL)
 		return -ENOMEM;

[-- Attachment #3: kernel-xfrm-cleanup.diff --]
[-- Type: text/plain, Size: 1152 bytes --]

diff -rup linux-2.6.2.vanilla/net/xfrm/xfrm_user.c linux-2.6.2/net/xfrm/xfrm_user.c
--- linux-2.6.2.vanilla/net/xfrm/xfrm_user.c	2004-02-04 04:43:56.000000000 +0100
+++ linux-2.6.2/net/xfrm/xfrm_user.c	2004-02-24 10:09:37.839560352 +0100
@@ -1052,9 +1052,8 @@ static int xfrm_send_acquire(struct xfrm
 	struct sk_buff *skb;
 	size_t len;
 
-	len = RTA_LENGTH(sizeof(struct xfrm_user_tmpl) * xp->xfrm_nr);
-	len = RTA_ALIGN(len);
-	len += NLMSG_ALIGN(NLMSG_LENGTH(sizeof(struct xfrm_user_acquire)));
+	len = RTA_SPACE(sizeof(struct xfrm_user_tmpl) * xp->xfrm_nr);
+	len += NLMSG_SPACE(sizeof(struct xfrm_user_acquire));
 	skb = alloc_skb(len, GFP_ATOMIC);
 	if (skb == NULL)
 		return -ENOMEM;
@@ -1151,9 +1150,8 @@ static int xfrm_send_policy_notify(struc
 	struct sk_buff *skb;
 	size_t len;
 
-	len = sizeof(struct xfrm_user_tmpl) * xp->xfrm_nr;
-	len = RTA_ALIGN(RTA_LENGTH(len));
-	len += NLMSG_ALIGN(NLMSG_LENGTH(sizeof(struct xfrm_user_polexpire)));
+	len = RTA_SPACE(sizeof(struct xfrm_user_tmpl) * xp->xfrm_nr);
+	len += NLMSG_SPACE(sizeof(struct xfrm_user_polexpire));
 	skb = alloc_skb(len, GFP_ATOMIC);
 	if (skb == NULL)
 		return -ENOMEM;

             reply	other threads:[~2004-02-24  9:09 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-02-24  9:09 Michal Ludvig [this message]
2004-02-25  8:18 ` [PATCH] XFRM policy expire David S. Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=403B14DA.3000700@suse.cz \
    --to=mludvig@suse.cz \
    --cc=davem@redhat.com \
    --cc=netdev@oss.sgi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.