lkml.org 
[lkml]   [2003]   [Jun]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [PATCH] udev enhancements to use kernel event queue

On 12 Jun 2003, Robert Love wrote:

> On Thu, 2003-06-12 at 16:09, Greg KH wrote:
>
> > +
> > + envp [i++] = scratch;
> > + scratch += sprintf(scratch, "SEQNUM=%ld", sequence_num) + 1;
> > + ++sequence_num;
>
> Since I do not see a lock in here, I think you need to use atomics?
>
> As is, you can also race and have the same sequence_num value written
> out twice.

Yeah, how about this ammended patch?


-pat

===== lib/kobject.c 1.25 vs edited =====
--- 1.25/lib/kobject.c Wed Jun 11 12:06:06 2003
+++ edited/lib/kobject.c Thu Jun 12 16:24:26 2003
@@ -100,6 +100,9 @@

#define BUFFER_SIZE 1024 /* should be enough memory for the env */
#define NUM_ENVP 32 /* number of env pointers */
+static unsigned long sequence_num;
+static spinlock_t sequence_lock = SPIN_LOCK_UNLOCKED;
+
static void kset_hotplug(const char *action, struct kset *kset,
struct kobject *kobj)
{
@@ -112,6 +115,7 @@
int kobj_path_length;
char *kobj_path = NULL;
char *name = NULL;
+ unsigned long seq;

/* If the kset has a filter operation, call it. If it returns
failure, no hotplug event is required. */
@@ -151,6 +155,13 @@

envp [i++] = scratch;
scratch += sprintf(scratch, "ACTION=%s", action) + 1;
+
+ spin_lock(&sequence_lock);
+ seq = sequence_num++;
+ spin_unlock(&sequence_lock);
+
+ envp [i++] = scratch;
+ scratch += sprintf(scratch, "SEQNUM=%ld", seq) + 1;

kobj_path_length = get_kobj_path_length (kset, kobj);
kobj_path = kmalloc (kobj_path_length, GFP_KERNEL);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:36    [W:0.116 / U:0.216 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site