10 Dec, 2011

1 commit


23 Aug, 2011

1 commit

  • kobject_uevent() uses a multicast socket and should ignore
    if one of listeners cannot handle messages or nobody is
    listening at all.

    Easily reproducible when a process in system is cloned
    with CLONE_NEWNET flag.

    (See also http://article.gmane.org/gmane.linux.kernel.device-mapper.dm-crypt/5256)

    Signed-off-by: Milan Broz
    Acked-by: Kay Sievers
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Milan Broz
     

24 Aug, 2010

1 commit


05 Jun, 2010

2 commits


22 May, 2010

3 commits


30 Mar, 2010

1 commit

  • …it slab.h inclusion from percpu.h

    percpu.h is included by sched.h and module.h and thus ends up being
    included when building most .c files. percpu.h includes slab.h which
    in turn includes gfp.h making everything defined by the two files
    universally available and complicating inclusion dependencies.

    percpu.h -> slab.h dependency is about to be removed. Prepare for
    this change by updating users of gfp and slab facilities include those
    headers directly instead of assuming availability. As this conversion
    needs to touch large number of source files, the following script is
    used as the basis of conversion.

    http://userweb.kernel.org/~tj/misc/slabh-sweep.py

    The script does the followings.

    * Scan files for gfp and slab usages and update includes such that
    only the necessary includes are there. ie. if only gfp is used,
    gfp.h, if slab is used, slab.h.

    * When the script inserts a new include, it looks at the include
    blocks and try to put the new include such that its order conforms
    to its surrounding. It's put in the include block which contains
    core kernel includes, in the same order that the rest are ordered -
    alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
    doesn't seem to be any matching order.

    * If the script can't find a place to put a new include (mostly
    because the file doesn't have fitting include block), it prints out
    an error message indicating which .h file needs to be added to the
    file.

    The conversion was done in the following steps.

    1. The initial automatic conversion of all .c files updated slightly
    over 4000 files, deleting around 700 includes and adding ~480 gfp.h
    and ~3000 slab.h inclusions. The script emitted errors for ~400
    files.

    2. Each error was manually checked. Some didn't need the inclusion,
    some needed manual addition while adding it to implementation .h or
    embedding .c file was more appropriate for others. This step added
    inclusions to around 150 files.

    3. The script was run again and the output was compared to the edits
    from #2 to make sure no file was left behind.

    4. Several build tests were done and a couple of problems were fixed.
    e.g. lib/decompress_*.c used malloc/free() wrappers around slab
    APIs requiring slab.h to be added manually.

    5. The script was run on all .h files but without automatically
    editing them as sprinkling gfp.h and slab.h inclusions around .h
    files could easily lead to inclusion dependency hell. Most gfp.h
    inclusion directives were ignored as stuff from gfp.h was usually
    wildly available and often used in preprocessor macros. Each
    slab.h inclusion directive was examined and added manually as
    necessary.

    6. percpu.h was updated not to include slab.h.

    7. Build test were done on the following configurations and failures
    were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my
    distributed build env didn't work with gcov compiles) and a few
    more options had to be turned off depending on archs to make things
    build (like ipr on powerpc/64 which failed due to missing writeq).

    * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
    * powerpc and powerpc64 SMP allmodconfig
    * sparc and sparc64 SMP allmodconfig
    * ia64 SMP allmodconfig
    * s390 SMP allmodconfig
    * alpha SMP allmodconfig
    * um on x86_64 SMP allmodconfig

    8. percpu.h modifications were reverted so that it could be applied as
    a separate patch and serve as bisection point.

    Given the fact that I had only a couple of failures from tests on step
    6, I'm fairly confident about the coverage of this conversion patch.
    If there is a breakage, it's likely to be something in one of the arch
    headers which should be easily discoverable easily on most builds of
    the specific arch.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>

    Tejun Heo
     

08 Mar, 2010

1 commit

  • Constify struct kset_uevent_ops.

    This is part of the ops structure constification
    effort started by Arjan van de Ven et al.

    Benefits of this constification:

    * prevents modification of data that is shared
    (referenced) by many other structure instances
    at runtime

    * detects/prevents accidental (but not intentional)
    modification attempts on archs that enforce
    read-only kernel data at runtime

    * potentially better optimized code as the compiler
    can assume that the const data cannot be changed

    * the compiler/linker move const data into .rodata
    and therefore exclude them from false sharing

    Signed-off-by: Emese Revfy
    Signed-off-by: Greg Kroah-Hartman

    Emese Revfy
     

17 Apr, 2009

2 commits

  • Users can read sysfs files, there is no reason they should not be
    allowed to listen to uevents. This lets xorg and other userspace
    programs properly get these messages without having to be root.

    Signed-off-by: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     
  • This reverts commit f520360d93cdc37de5d972dac4bf3bdef6a7f6a7.

    Tetsuo Handa, running a kernel with CONFIG_DEBUG_PAGEALLOC=y and
    CONFIG_UEVENT_HELPER_PATH=/sbin/hotplug, has been hitting RCU detected
    CPU stalls: it's been spinning in the loop where do_execve() counts up
    the args (but why wasn't fixup_exception working? dunno).

    The recent change, switching kobject_uevent_env() from UMH_WAIT_EXEC
    to UMH_NO_WAIT, is broken: the exec uses args on the local stack here,
    and an env which is kfreed as soon as call_usermodehelper() returns.
    It very much needs to wait for the exec to be done.

    An alternative would be to keep the UMH_NO_WAIT, and complicate the code
    to allocate and free these resources correctly? but no, as GregKH
    pointed out when making the commit, CONFIG_UEVENT_HELPER_PATH="" is a
    much better optimization - though some distros are still saying
    /sbin/hotplug in their .config, yet with no such binary in their initrd
    or their root.

    Reported-by: Tetsuo Handa
    Signed-off-by: Hugh Dickins
    Acked-by: Greg Kroah-Hartman
    Acked-by: Arjan van de Ven
    Acked-by: Will Newton
    Signed-off-by: Linus Torvalds

    Hugh Dickins
     

27 Mar, 2009

1 commit


25 Mar, 2009

2 commits

  • Right now, the kobject_uevent code blocks for each uevent that's being
    generated, due to using (for hystoric reasons) UHM_WAIT_EXEC as flag to
    call_usermode_helper(). Specifically, the effect is that each uevent
    that is being sent causes the code to wake up keventd, then block until
    keventd has processed the work. Needless to say, this happens many times
    during the system boot.

    This patches changes that to UHN_NO_WAIT (brilliant name for a constant
    btw) so that we only schedule the work to fire the uevent message, but
    do not wait for keventd to process the work.

    This removes one of the bottlenecks during boot; each one of them is
    only a small effect, but the sum of them does add up.

    [Note, distros that need this are broken, they should be setting
    CONFIG_UEVENT_HELPER_PATH to "", that way this code path will never be
    excuted at all -- gregkh]

    Signed-off-by: Arjan van de Ven
    Signed-off-by: Greg Kroah-Hartman

    Arjan van de Ven
     
  • This patch implements uevent suppress in kobject and removes it
    from struct device, based on the following ideas:

    1,Uevent sending should be one attribute of kobject, so suppressing it
    in kobject layer is more natural than in device layer. By this way,
    we can do it for other objects embedded with kobject.

    2,It may save several bytes for each instance of struct device.(On my
    omap3(32bit ARM) based box, can save 8bytes per device object)

    This patch also introduces dev_set|get_uevent_suppress() helpers to
    set and query uevent_suppress attribute in case to help kobject
    as private part of struct device in future.

    [This version is against the latest driver-core patch set of Greg,please
    ignore the last version.]

    Signed-off-by: Ming Lei
    Signed-off-by: Greg Kroah-Hartman

    Ming Lei
     

06 Feb, 2009

1 commit

  • Currently, netlink_broadcast() reports errors to the caller if no
    messages at all were delivered:

    1) If, at least, one message has been delivered correctly, returns 0.
    2) Otherwise, if no messages at all were delivered due to skb_clone()
    failure, return -ENOBUFS.
    3) Otherwise, if there are no listeners, return -ESRCH.

    With this patch, the caller knows if the delivery of any of the
    messages to the listeners have failed:

    1) If it fails to deliver any message (for whatever reason), return
    -ENOBUFS.
    2) Otherwise, if all messages were delivered OK, returns 0.
    3) Otherwise, if no listeners, return -ESRCH.

    In the current ctnetlink code and in Netfilter in general, we can add
    reliable logging and connection tracking event delivery by dropping the
    packets whose events were not successfully delivered over Netlink. Of
    course, this option would be settable via /proc as this approach reduces
    performance (in terms of filtered connections per seconds by a stateful
    firewall) but providing reliable logging and event delivery (for
    conntrackd) in return.

    This patch also changes some clients of netlink_broadcast() that
    may report ENOBUFS errors via printk. This error handling is not
    of any help. Instead, the userspace daemons that are listening to
    those netlink messages should resync themselves with the kernel-side
    if they hit ENOBUFS.

    BTW, netlink_broadcast() clients include those that call
    cn_netlink_send(), nlmsg_multicast() and genlmsg_multicast() since they
    internally call netlink_broadcast() and return its error value.

    Signed-off-by: Pablo Neira Ayuso
    Signed-off-by: David S. Miller

    Pablo Neira Ayuso
     

07 Jan, 2009

2 commits


27 Jul, 2008

1 commit

  • Use WARN() instead of a printk+WARN_ON() pair; this way the message becomes
    part of the warning section for better reporting/collection. In addition, one
    of the if() clauses collapes into the WARN() entirely now.

    Signed-off-by: Arjan van de Ven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arjan van de Ven
     

22 Jul, 2008

1 commit

  • kobject_uevent_env() drops the return value of call_usermodehelper().
    It will make upper caller, such as dm_send_uevents(), to lose error
    information.

    BTW, Previously kobject_uevent_env() transmitted return of
    call_usermodehelper() to callers, but
    commit 5f123fbd80f4f788554636f02bf73e40f914e0d6
    "[PATCH] merge kobject_uevent and kobject_hotplug" removed it.

    Signed-off-by: Wang Chen
    Cc: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Wang Chen
     

30 Apr, 2008

1 commit


04 Apr, 2008

2 commits


31 Mar, 2008

1 commit

  • Mark Lord wrote:
    >
    > On boot, syslog is flooded with "uevent: unsupported action-string;" messages.
    ..
    > Mar 28 14:43:29 shrimp kernel: tty ptyqd: uevent: unsupported
    > action-string; this will be ignored in a future kernel version
    > Mar 28 14:43:29 shrimp kernel: tty ptyqe: uevent: unsupported
    > action-string; this will be ignored in a future kernel version
    > Mar 28 14:43:29 shrimp kernel: tty ptyqf: uevent: unsupported
    > action-string; this will be ignored in a future kernel version
    > Mar 28 14:43:29 shrimp kernel: tty ptyr0: uevent: unsupported
    > action-string; this will be ignored in a future kernel version
    ..

    These messages are a regression compared with 2.6.24, which did not
    flood the syslog with them.

    The actual underlying problem was introduced in 2.6.23, when somebody
    made the string parsing no longer accept nul-terminated strings as a
    valid input to store_uevent().

    Eg. "add\0" was valid prior to 2.6.23, where the code regressed to
    require "add" without the '\0'.

    This patch fixes the 2.6.23 / 2.6.24 regressions, by having the code
    once again tolerate the trailing '\0', if present.

    According to GregKH, this mainly affects older Ubuntu systems, such as
    the one I have here that requires this fix.

    Signed-off-by: Mark Lord
    Signed-off-by: Linus Torvalds

    Mark Lord
     

28 Mar, 2008

1 commit


25 Jan, 2008

3 commits

  • Clean up the kobject.c and kobject_uevent.c files to follow the
    proper coding style rules.

    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • We save the current state in the object itself, so we can do proper
    cleanup when the last reference is dropped.

    If the initial reference is dropped, the object will be removed from
    sysfs if needed, if an "add" event was sent, "remove" will be send, and
    the allocated resources are released.

    This allows us to clean up some driver core usage as well as allowing us
    to do other such changes to the rest of the kernel.

    Signed-off-by: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     
  • The kobject debugging messages are a mess. This provides a unified
    message that makes them actually useful.

    The format for new kobject debug messages should be:
    kobject: 'KOBJECT_NAME' (ADDRESS): FUNCTION_NAME: message.\n

    Cc: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

20 Oct, 2007

1 commit


13 Oct, 2007

4 commits

  • Signed-off-by: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     
  • Move uevent specific logic from the core into kobject_uevent.c, which
    does no longer require to link the unused string array if hotplug
    is not compiled in.

    Signed-off-by: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     
  • The kernel creates a process for every event that is send, even when
    there is no binary it could execute. We are needlessly creating around
    200-300 failing processes during early bootup, until we have the chance
    to disable it from userspace.

    This change allows us to disable /sbin/hotplug entirely, if you want to,
    by setting UEVENT_HELPER_PATH="" in the kernel config.

    Signed-off-by: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     
  • This changes the uevent buffer functions to use a struct instead of a
    long list of parameters. It does no longer require the caller to do the
    proper buffer termination and size accounting, which is currently wrong
    in some places. It fixes a known bug where parts of the uevent
    environment are overwritten because of wrong index calculations.

    Many thanks to Mathieu Desnoyers for finding bugs and improving the
    error handling.

    Signed-off-by: Kay Sievers
    Cc: Mathieu Desnoyers
    Cc: Cornelia Huck
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     

11 Oct, 2007

1 commit

  • Each netlink socket will live in exactly one network namespace,
    this includes the controlling kernel sockets.

    This patch updates all of the existing netlink protocols
    to only support the initial network namespace. Request
    by clients in other namespaces will get -ECONREFUSED.
    As they would if the kernel did not have the support for
    that netlink protocol compiled in.

    As each netlink protocol is updated to be multiple network
    namespace safe it can register multiple kernel sockets
    to acquire a presence in the rest of the network namespaces.

    The implementation in af_netlink is a simple filter implementation
    at hash table insertion and hash table look up time.

    Signed-off-by: Eric W. Biederman
    Signed-off-by: David S. Miller

    Eric W. Biederman
     

31 Jul, 2007

1 commit

  • Leaving kobject_actions[] in kobject_uevent.c, but putting it outside
    the #ifdef looks indeed like the best solution to me. This way, we
    avoid adding #ifdef CONFIG_HOTPLUG into core.c, when all other
    functions called do not need such a thing.

    Signed-off-by: Cornelia Huck
    Cc: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Cornelia Huck
     

19 Jul, 2007

1 commit


18 Jul, 2007

1 commit

  • Rather than using a tri-state integer for the wait flag in
    call_usermodehelper_exec, define a proper enum, and use that. I've
    preserved the integer values so that any callers I've missed should
    still work OK.

    Signed-off-by: Jeremy Fitzhardinge
    Cc: James Bottomley
    Cc: Randy Dunlap
    Cc: Christoph Hellwig
    Cc: Andi Kleen
    Cc: Paul Mackerras
    Cc: Johannes Berg
    Cc: Ralf Baechle
    Cc: Bjorn Helgaas
    Cc: Joel Becker
    Cc: Tony Luck
    Cc: Kay Sievers
    Cc: Srivatsa Vaddagiri
    Cc: Oleg Nesterov
    Cc: David Howells

    Jeremy Fitzhardinge
     

28 Apr, 2007

3 commits