linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC/PATCH] Per-device parameter support (2/16)
@ 2004-10-23  4:24 Tejun Heo
  2004-10-25  4:28 ` Rusty Russell
  0 siblings, 1 reply; 3+ messages in thread
From: Tejun Heo @ 2004-10-23  4:24 UTC (permalink / raw)
  To: rusty, mochel; +Cc: linux-kernel

 dp_02_param_array_bug.diff

 This is the 2nd patch of 16 patches for devparam.

 This patches fixes param_array_set() to not use arr->max as nump
argument of param_array.  If arr->max is used as nump and the
configuration variable is exported writeable in the syfs, the size of
the array will be limited by the smallest number of elements
specified.  One side effect is that as the actual number of elements
is not recorded anymore when nump is NULL, all elements should be
printed when referencing the corresponding sysfs node.  I don't think
that will cause any problem.


Signed-off-by: Tejun Heo <tj@home-tj.org>


Index: linux-devparam-export/kernel/params.c
===================================================================
--- linux-devparam-export.orig/kernel/params.c	2004-10-22 17:13:33.000000000 +0900
+++ linux-devparam-export/kernel/params.c	2004-10-23 11:09:28.000000000 +0900
@@ -302,9 +302,10 @@ int param_array(const char *name,
 int param_array_set(const char *val, struct kernel_param *kp)
 {
 	struct kparam_array *arr = kp->arg;
+	unsigned int t;
 
 	return param_array(kp->name, val, 1, arr->max, arr->elem,
-			   arr->elemsize, arr->set, arr->num ?: &arr->max);
+			   arr->elemsize, arr->set, arr->num ?: &t);
 }
 
 int param_array_get(char *buffer, struct kernel_param *kp)

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [RFC/PATCH] Per-device parameter support (2/16)
  2004-10-23  4:24 [RFC/PATCH] Per-device parameter support (2/16) Tejun Heo
@ 2004-10-25  4:28 ` Rusty Russell
  2004-10-25  7:18   ` Tejun Heo
  0 siblings, 1 reply; 3+ messages in thread
From: Rusty Russell @ 2004-10-25  4:28 UTC (permalink / raw)
  To: Tejun Heo; +Cc: mochel, lkml - Kernel Mailing List

On Sat, 2004-10-23 at 13:24 +0900, Tejun Heo wrote:
>  dp_02_param_array_bug.diff
> 
>  This is the 2nd patch of 16 patches for devparam.
> 
>  This patches fixes param_array_set() to not use arr->max as nump
> argument of param_array.  If arr->max is used as nump and the
> configuration variable is exported writeable in the syfs, the size of
> the array will be limited by the smallest number of elements
> specified.  One side effect is that as the actual number of elements
> is not recorded anymore when nump is NULL, all elements should be
> printed when referencing the corresponding sysfs node.  I don't think
> that will cause any problem.

I thought of this, but I prefer to see this fixed by another element in
the struct kernel_param which is used as "num" if nump is NULL.
Although this creates some bloat, it doesn't truncate as mine does, or
allow overflows and printing unset values as yours does.

(Printing unset values is usually OK, since before the new parameter
stuff, there was no way of telling how many elements had been set.  This
lead authors to use a magic value for "unset".  They no longer need to
do this, so we might see them start to rely on that).

Cheers,
Rusty.
-- 
A bad analogy is like a leaky screwdriver -- Richard Braakman


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [RFC/PATCH] Per-device parameter support (2/16)
  2004-10-25  4:28 ` Rusty Russell
@ 2004-10-25  7:18   ` Tejun Heo
  0 siblings, 0 replies; 3+ messages in thread
From: Tejun Heo @ 2004-10-25  7:18 UTC (permalink / raw)
  To: Rusty Russell; +Cc: mochel, lkml - Kernel Mailing List

Hello, Rusty.

On Mon, Oct 25, 2004 at 02:28:59PM +1000, Rusty Russell wrote:
> On Sat, 2004-10-23 at 13:24 +0900, Tejun Heo wrote:
> >  dp_02_param_array_bug.diff
> > 
> >  This is the 2nd patch of 16 patches for devparam.
> > 
> >  This patches fixes param_array_set() to not use arr->max as nump
> > argument of param_array.  If arr->max is used as nump and the
> > configuration variable is exported writeable in the syfs, the size of
> > the array will be limited by the smallest number of elements
> > specified.  One side effect is that as the actual number of elements
> > is not recorded anymore when nump is NULL, all elements should be
> > printed when referencing the corresponding sysfs node.  I don't think
> > that will cause any problem.
> 
> I thought of this, but I prefer to see this fixed by another element in
> the struct kernel_param which is used as "num" if nump is NULL.
> Although this creates some bloat, it doesn't truncate as mine does, or
> allow overflows and printing unset values as yours does.

 The problem is that, in devparam, a devparam_def and accordingly any
wrapping argument structure is shared by more than one users (e.g. a
dev paramset_def is used by all devices attached to the particular
driver).  And, making matters complicated, bus and class
paramset_def's can even be accessed concurrently.

 As we need to adjust pointers in wrapping structures to point to
specific fields in each allocated paramsets, wrapping arguments are
copied and fixed up everytime it's used (so the arg_copy_size and
arg_fixups fields in struct device_paramset_def).  i.e. wrapping
arguments are transient.  They can contain extra read-only information
to describe the parameter to the driver-model but cannot contain any
information the other way around.  Consequently, adding num field to
struct param_array wouldn't work for devparam.

> (Printing unset values is usually OK, since before the new parameter
> stuff, there was no way of telling how many elements had been set.  This
> lead authors to use a magic value for "unset".  They no longer need to
> do this, so we might see them start to rely on that).

 I think, for a user who's willing to make use of the number of set
elements, requiring to supply the number field is okay.

-- 
tejun


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2004-10-25  7:20 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-10-23  4:24 [RFC/PATCH] Per-device parameter support (2/16) Tejun Heo
2004-10-25  4:28 ` Rusty Russell
2004-10-25  7:18   ` Tejun Heo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).