Re: [PATCH] param_sysfs_builtin memchr argument fix - Kernel

This is a discussion on Re: [PATCH] param_sysfs_builtin memchr argument fix - Kernel ; Hi, Thanks for comment. fixed. Regards dave ----- If memchr argument is longer than strlen(kp->name), there will be some weird result. Signed-off-by: Dave Young --- kernel/params.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff -upr linux/kernel/params.c linux.new/kernel/params.c ...

+ Reply to Thread
Results 1 to 3 of 3

Thread: Re: [PATCH] param_sysfs_builtin memchr argument fix

  1. Re: [PATCH] param_sysfs_builtin memchr argument fix

    Hi,
    Thanks for comment.
    fixed.

    Regards
    dave
    -----

    If memchr argument is longer than strlen(kp->name), there will be some
    weird result.

    Signed-off-by: Dave Young

    ---
    kernel/params.c | 8 +++++++-
    1 file changed, 7 insertions(+), 1 deletion(-)

    diff -upr linux/kernel/params.c linux.new/kernel/params.c
    --- linux/kernel/params.c 2007-10-08 14:30:06.000000000 +0800
    +++ linux.new/kernel/params.c 2007-10-08 15:13:04.000000000 +0800
    @@ -592,11 +592,17 @@ static void __init param_sysfs_builtin(v

    for (i=0; i < __stop___param - __start___param; i++) {
    char *dot;
    + size_t kplen;

    kp = &__start___param[i];
    + kplen = strlen(kp->name);

    /* We do not handle args without periods. */
    - dot = memchr(kp->name, '.', MAX_KBUILD_MODNAME);
    + if (kplen > MAX_KBUILD_MODNAME) {
    + DEBUGP("kernel parameter %s is too long\n", kp->name);
    + continue;
    + }
    + dot = memchr(kp->name, '.', kplen);
    if (!dot) {
    DEBUGP("couldn't find period in %s\n", kp->name);
    continue;
    -
    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/

  2. Re: [PATCH] param_sysfs_builtin memchr argument fix

    On Mon, 8 Oct 2007 15:17:30 +0800 Dave Young wrote:

    > Hi,
    > Thanks for comment.
    > fixed.
    >
    > Regards
    > dave
    > -----
    >
    > If memchr argument is longer than strlen(kp->name), there will be some
    > weird result.


    Just to clarify: this was causing duplicate filenames in sysfs ?


    > Signed-off-by: Dave Young
    >
    > ---
    > kernel/params.c | 8 +++++++-
    > 1 file changed, 7 insertions(+), 1 deletion(-)
    >
    > diff -upr linux/kernel/params.c linux.new/kernel/params.c
    > --- linux/kernel/params.c 2007-10-08 14:30:06.000000000 +0800
    > +++ linux.new/kernel/params.c 2007-10-08 15:13:04.000000000 +0800
    > @@ -592,11 +592,17 @@ static void __init param_sysfs_builtin(v
    >
    > for (i=0; i < __stop___param - __start___param; i++) {
    > char *dot;
    > + size_t kplen;
    >
    > kp = &__start___param[i];
    > + kplen = strlen(kp->name);
    >
    > /* We do not handle args without periods. */
    > - dot = memchr(kp->name, '.', MAX_KBUILD_MODNAME);
    > + if (kplen > MAX_KBUILD_MODNAME) {
    > + DEBUGP("kernel parameter %s is too long\n", kp->name);


    how about
    kernel parameter name %s is too long
    or
    kernel parameter name is too long: %s

    (primary is addition of "name")

    > + continue;
    > + }
    > + dot = memchr(kp->name, '.', kplen);
    > if (!dot) {
    > DEBUGP("couldn't find period in %s\n", kp->name);
    > continue;
    > -



    ---
    ~Randy
    -
    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/

  3. Re: [PATCH] param_sysfs_builtin memchr argument fix

    > > If memchr argument is longer than strlen(kp->name), there will be some
    > > weird result.

    >
    > Just to clarify: this was causing duplicate filenames in sysfs ?

    Yes, it will casuse duplicate filenames in sysfs. For me, the "nousb"
    will cause the "usbcore" created twice.
    >
    >
    > > Signed-off-by: Dave Young
    > >
    > > ---
    > > kernel/params.c | 8 +++++++-
    > > 1 file changed, 7 insertions(+), 1 deletion(-)
    > >
    > > diff -upr linux/kernel/params.c linux.new/kernel/params.c
    > > --- linux/kernel/params.c 2007-10-08 14:30:06.000000000 +0800
    > > +++ linux.new/kernel/params.c 2007-10-08 15:13:04.000000000 +0800
    > > @@ -592,11 +592,17 @@ static void __init param_sysfs_builtin(v
    > >
    > > for (i=0; i < __stop___param - __start___param; i++) {
    > > char *dot;
    > > + size_t kplen;
    > >
    > > kp = &__start___param[i];
    > > + kplen = strlen(kp->name);
    > >
    > > /* We do not handle args without periods. */
    > > - dot = memchr(kp->name, '.', MAX_KBUILD_MODNAME);
    > > + if (kplen > MAX_KBUILD_MODNAME) {
    > > + DEBUGP("kernel parameter %s is too long\n", kp->name);

    >
    > how about
    > kernel parameter name %s is too long
    > or
    > kernel parameter name is too long: %s
    >
    > (primary is addition of "name")

    Yes, "name" should be added, thanks.
    >
    > > + continue;
    > > + }
    > > + dot = memchr(kp->name, '.', kplen);
    > > if (!dot) {
    > > DEBUGP("couldn't find period in %s\n", kp->name);
    > > continue;
    > > -

    >


    Regards
    dave

    ================================================== ==

    Signed-off-by: Dave Young

    ---
    kernel/params.c | 8 +++++++-
    1 file changed, 7 insertions(+), 1 deletion(-)

    diff -upr linux/kernel/params.c linux.new/kernel/params.c
    --- linux/kernel/params.c 2007-10-08 14:30:06.000000000 +0800
    +++ linux.new/kernel/params.c 2007-10-09 09:16:55.000000000 +0800
    @@ -592,11 +592,17 @@ static void __init param_sysfs_builtin(v

    for (i=0; i < __stop___param - __start___param; i++) {
    char *dot;
    + size_t kplen;

    kp = &__start___param[i];
    + kplen = strlen(kp->name);

    /* We do not handle args without periods. */
    - dot = memchr(kp->name, '.', MAX_KBUILD_MODNAME);
    + if (kplen > MAX_KBUILD_MODNAME) {
    + DEBUGP("kernel parameter name is too long: %s\n", kp->name);
    + continue;
    + }
    + dot = memchr(kp->name, '.', kplen);
    if (!dot) {
    DEBUGP("couldn't find period in %s\n", kp->name);
    continue;
    -
    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/

+ Reply to Thread