22 Feb, 2012

1 commit

  • isdn source code uses a not-current coding style.

    Update the coding style used on a per-line basis
    so that git diff -w shows only elided blank lines
    at EOF.

    Done with emacs and some scripts and some typing.

    Built x86 allyesconfig.
    No detected change in objdump -d or size.

    Signed-off-by: Joe Perches

    Joe Perches
     

24 Dec, 2010

1 commit

  • flush_scheduled_work() is deprecated and will be removed. Because
    kcapi uses fire-and-forget type works, it's impossible to flush each
    work explicitly. Create and use a dedicated workqueue instead.

    Please note that with recent workqueue changes, each workqueue doesn't
    reserve a lot of resources and using it as a flush domain is fine.

    Signed-off-by: Tejun Heo
    Acked-by: Jan Kiszka

    Tejun Heo
     

21 Oct, 2010

1 commit

  • As long as we hold capi_controller_lock, we can safely access
    capi_applications without RCU protection as no one can modify the
    application list underneath us. Introduce an RCU-free
    __get_capi_appl_by_nr for this purpose. This silences lockdep warnings
    on suspicious rcu_dereference usage.

    Signed-off-by: Jan Kiszka
    Signed-off-by: David S. Miller

    Jan Kiszka
     

03 Jun, 2010

1 commit

  • copy_from_user() returns the number of bytes remaining but we should
    return -EFAULT here. The error code gets returned to the user. Both
    old_capi_manufacturer() and capi20_manufacturer() had other places
    that already returned -EFAULT so this won't break anything.

    Signed-off-by: Dan Carpenter
    Signed-off-by: David S. Miller

    Dan Carpenter
     

24 May, 2010

1 commit


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
     

17 Feb, 2010

8 commits

  • This strange special rule to fall back to controller 1 cannot be derived
    from the CAPI specs and looks a lot like it was once dedicated to some
    out-of-tree driver, probably AVM's broken fcdsl2 (FRITZ!Card DSL v2.0).
    I found no in-tree user that needs this check, and I'm now taking care
    of the fcdsl2. So drop these bits from our stack.

    Signed-off-by: Jan Kiszka
    Signed-off-by: David S. Miller

    Jan Kiszka
     
  • Drop the application rw-lock in favour of RCU. This synchronizes
    capi20_release against capi_ctr_handle_message which may dereference an
    application from (soft-)IRQ context. Any other access to the application
    list is now protected by the capi_controller_lock as well. This also
    allows to safely inspect applications for /proc dumping by holding
    capi_controller_lock.

    At this chance, drop some useless release_in_progress checks where we
    obtained the application pointer from the list (which becomes NULL on
    release_in_progress).

    Signed-off-by: Jan Kiszka
    Signed-off-by: David S. Miller

    Jan Kiszka
     
  • This patch applies the mutex so far only protecting the controller list
    to (almost) all accesses of controller data structures. It also reworks
    waiting on state changes in old_capi_manufacturer so that it no longer
    poll and holds a module reference to the controller owner while waiting
    (the latter was partly done already). Modification and checking of the
    blocked state remains racy by design, the caller is responsible for
    dealing with this.

    Signed-off-by: Jan Kiszka
    Signed-off-by: David S. Miller

    Jan Kiszka
     
  • Another step towards proper locking: Rework the callback provided to
    capidrv for controller state changes. This is so far attached to an
    application, which would require us to hold the corresponding lock
    across notification calls.

    But there is no direct relation between a controller up/down event and
    an application, so let's decouple them and provide a notifier call chain
    for those events instead. This notifier chain is first of all used
    internally. Here we request the highest priority to unsure that
    housekeeping work is done before any other notifications. The chain is
    exported via [un]register_capictr_notifier to our only user, capidrv, to
    replace the racy and unfixable capi20_set_callback.

    Signed-off-by: Jan Kiszka
    Signed-off-by: David S. Miller

    Jan Kiszka
     
  • This step prepares the application of proper controller locking: Push
    all state changing work into the notify handler that are called by
    capi_ctr_ready and capi_ctr_down, switch detach_capi_ctr to issue a
    synchronous ctr_down. Also ensure that we do not go through any action
    if the state did not change.

    Signed-off-by: Jan Kiszka
    Signed-off-by: David S. Miller

    Jan Kiszka
     
  • Turn the lock protecting registered capi drivers into a mutex and apply
    it consistently.

    Signed-off-by: Jan Kiszka
    Signed-off-by: David S. Miller

    Jan Kiszka
     
  • At least for our internal use, fix the misnomers that refer to a CAPI
    controller as 'card'. No functional changes.

    Signed-off-by: Jan Kiszka
    Signed-off-by: David S. Miller

    Jan Kiszka
     
  • The CVS revisions dumped by all CAPI modules are meaningless today. And
    that some CAPI module is loaded or removed does not necessarily deserve
    a message. Just keep the message of the central module, capi.ko, drop
    the rest.

    Signed-off-by: Jan Kiszka
    Signed-off-by: David S. Miller

    Jan Kiszka
     

14 Jan, 2010

1 commit

  • Convert code away from ->read_proc/->write_proc interfaces. Switch to
    proc_create()/proc_create_data() which make addition of proc entries
    reliable wrt NULL ->proc_fops, NULL ->data and so on.

    Problem with ->read_proc et al is described here commit
    786d7e1612f0b0adb6046f19b906609e4fe8b1ba "Fix rmmod/read/write races in
    /proc entries"

    [akpm@linux-foundation.org: CONFIG_PROC_FS=n build fix]
    Signed-off-by: Alexey Dobriyan
    Signed-off-by: Tilman Schmidt
    Signed-off-by: Karsten Keil
    Signed-off-by: David S. Miller

    Alexey Dobriyan
     

12 Oct, 2009

1 commit


08 Jun, 2009

1 commit


27 Apr, 2009

1 commit

  • isdn: document Kernel CAPI driver interface

    Create a file Documentation/isdn/INTERFACE.CAPI describing the
    interface between the kernel CAPI subsystem and ISDN device drivers,
    analogous to the existing Documentation/isdn/INTERFACE for the old
    isdn4linux subsystem. Also add kerneldoc comments to the exported
    functions in drivers/isdn/capi/kcapi.c.

    Impact: Documentation
    Signed-off-by: Tilman Schmidt
    Signed-off-by: Karsten Keil
    Signed-off-by: David S. Miller

    Tilman Schmidt
     

23 Sep, 2008

1 commit

  • After calling capi_ctr_get, error handling code should call capi_ctr_put.

    The semantic match that finds this problem is as follows:
    (http://www.emn.fr/x-info/coccinelle/)

    //
    @r@
    expression x,E;
    statement S;
    position p1,p2,p3;
    @@

    (
    if ((x = capi_ctr_get@p1(...)) == NULL || ...) S
    |
    x = capi_ctr_get@p1(...)
    ... when != x
    if (x == NULL || ...) S
    )

    (
    return x;
    |
    return 0;
    |
    x = E
    |
    E = x
    |
    capi_ctr_put(x)
    )

    @exists@
    position r.p1,r.p2,r.p3;
    expression x;
    int ret != 0;
    statement S;
    @@

    * x = capi_ctr_get@p1(...)

    * return@p2 \(NULL\|ret\);
    //

    Signed-off-by: Julia Lawall
    Signed-off-by: Andrew Morton
    Signed-off-by: David S. Miller

    Julia Lawall
     

28 Apr, 2008

3 commits

  • Since CONFIG_AVMB1_COMPAT is not a Kconfig variable, move it out of the
    Kconfig namespace.

    Signed-off-by: Robert P. J. Day
    Acked-by: Karsten Keil
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Robert P. J. Day
     
  • __FUNCTION__ is gcc-specific, use __func__

    Signed-off-by: Harvey Harrison
    Cc: Karsten Keil
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Harvey Harrison
     
  • drivers/isdn/capi/kcapi.c:829:30: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/kcapi.c:838:27: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/kcapi.c:954:17: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/kcapi.c:1007:37: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/kcapi.c:1009:33: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capiutil.c:453:24: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capilib.c:47:30: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capi.c:353:29: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capi.c:369:15: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capi.c:486:48: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capi.c:515:46: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capi.c:541:47: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capi.c:692:47: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capi.c:699:49: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capi.c:704:14: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capi.c:943:53: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capi.c:948:32: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capi.c:969:42: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capi.c:989:48: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capi.c:1026:69: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capi.c:1028:19: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capi.c:1061:20: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capi.c:1529:37: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capi.c:1531:33: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capidrv.c:338:15: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capidrv.c:758:32: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capidrv.c:880:40: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capidrv.c:407:15: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capidrv.c:429:49: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capidrv.c:407:15: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capidrv.c:444:49: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capidrv.c:429:49: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capidrv.c:429:49: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capidrv.c:429:49: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capidrv.c:429:49: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capidrv.c:429:49: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capidrv.c:1664:61: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capidrv.c:1969:37: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capidrv.c:2294:37: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capidrv.c:2297:33: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capidrv.c:2338:37: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capidrv.c:2341:33: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capifs.c:192:37: warning: Using plain integer as NULL pointer
    drivers/isdn/capi/capifs.c:194:33: warning: Using plain integer as NULL pointer

    Signed-off-by: Harvey Harrison
    Cc: Karsten Keil
    Cc: Jeff Garzik
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Harvey Harrison
     

17 Oct, 2007

1 commit


18 Jul, 2007

1 commit


02 Mar, 2007

1 commit

  • The CAPI trace debug functions were using a fixed size buffer, which can be
    overflowed if wrong formatted CAPI messages were sent to the kernel capi
    layer. The code was also not protected against multiple callers. This fix
    bug 8028.

    Additionally the patch make the CAPI trace functions optional.

    Signed-off-by: Karsten Keil
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Karsten Keil
     

22 Nov, 2006

1 commit


23 Mar, 2006

1 commit

  • Semaphore to mutex conversion.

    The conversion was generated via scripts, and the result was validated
    automatically via a script as well.

    Signed-off-by: Arjan van de Ven
    Signed-off-by: Ingo Molnar
    Cc: Karsten Keil
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arjan van de Ven
     

17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds