From: Greg KH <greg@kroah.com>
To: Andrew <cmkrnl@speakeasy.net>, Kay Sievers <kay.sievers@vrfy.org>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [Patch] 2.6.10.rc1.bk6 /lib/kobject_uevent.c buffer issues
Date: Fri, 29 Oct 2004 15:13:15 -0500 [thread overview]
Message-ID: <20041029201314.GA29171@kroah.com> (raw)
In-Reply-To: <417FCD78.6020807@speakeasy.net>
On Wed, Oct 27, 2004 at 12:31:52PM -0400, Andrew wrote:
>
> Greg KH wrote:
> >
> >
> >Why not just use the same buffer? We should be able to do that.
> >
> >
> >I'd prefer we use the same buffer. Care to respin your patch?
> >
>
> Sure, I can only see two ways of achieving that however.
> 1) Change the API of kset_hotplug_ops.hotplug() to return the amount
> of consumed buffer (and possibly an updated value for i (num_envp)
> and then changing every real function that implements that interface
> or
> 2) Spin through the envp[] starting at i to NUM_ENVP looking for a NULL
> pointer dropping back 1 (last_used) then do a
> scratch += strlen(envp[last_used]) + 1
Ick, ok, let's stick with 2 buffers. How about the patch below? It's a
bit smaller than yours.
But there might still be a problem. With this change, the sequence
number is not sent out the kevent message. Kay, do you think this is an
issue? I don't think we can get netlink messages out of order, right?
I'll hold off on applying this patch until we figure this out...
thanks,
greg k-h
--- 1.5/lib/kobject_uevent.c 2004-10-22 17:42:27 -05:00
+++ edited/kobject_uevent.c 2004-10-29 15:05:32 -05:00
@@ -182,6 +182,7 @@
char *argv [3];
char **envp = NULL;
char *buffer = NULL;
+ char *seq_buff = NULL;
char *scratch;
int i = 0;
int retval;
@@ -229,6 +230,9 @@
buffer = kmalloc(BUFFER_SIZE, GFP_KERNEL);
if (!buffer)
goto exit;
+ seq_buff = kmalloc(BUFFER_SIZE, GFP_KERNEL);
+ if (!seq_buff)
+ goto exit;
if (hotplug_ops->name)
name = hotplug_ops->name(kset, kobj);
@@ -258,6 +262,9 @@
envp [i++] = scratch;
scratch += sprintf(scratch, "SUBSYSTEM=%s", name) + 1;
+ /* point to the buffer, but don't fill it until after the hotplug call */
+ envp [i++] = seq_buff;
+
if (hotplug_ops->hotplug) {
/* have the kset specific function add its stuff */
retval = hotplug_ops->hotplug (kset, kobj,
@@ -273,9 +280,7 @@
spin_lock(&sequence_lock);
seq = ++hotplug_seqnum;
spin_unlock(&sequence_lock);
-
- envp [i++] = scratch;
- scratch += sprintf(scratch, "SEQNUM=%lld", (long long)seq) + 1;
+ sprintf(seq_buff, "SEQNUM=%lld", (long long)seq);
pr_debug ("%s: %s %s seq=%lld %s %s %s %s %s\n",
__FUNCTION__, argv[0], argv[1], (long long)seq,
@@ -293,6 +298,7 @@
exit:
kfree(kobj_path);
+ kfree(seq_buff);
kfree(buffer);
kfree(envp);
return;
next prev parent reply other threads:[~2004-10-29 20:22 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20041027142925.GA17484@imladris.arnor.me>
2004-10-27 15:21 ` [Patch] 2.6.10.rc1.bk6 /lib/kobject_uevent.c buffer issues Greg KH
2004-10-27 16:31 ` Andrew
2004-10-29 20:13 ` Greg KH [this message]
2004-10-29 21:28 ` Kay Sievers
2004-10-29 23:13 ` Greg KH
2004-10-30 0:00 ` Kay Sievers
2004-10-30 0:25 ` Kay Sievers
2004-10-30 2:54 ` Kay Sievers
2004-10-30 3:23 ` Andrew
2004-10-31 4:11 ` Kay Sievers
2004-11-01 19:46 ` Greg KH
2004-10-27 17:17 Klaus Dittrich
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=20041029201314.GA29171@kroah.com \
--to=greg@kroah.com \
--cc=cmkrnl@speakeasy.net \
--cc=kay.sievers@vrfy.org \
--cc=linux-kernel@vger.kernel.org \
/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.