1. 16 6月, 2017 2 次提交
    • J
      networking: make skb_put & friends return void pointers · 4df864c1
      Johannes Berg 提交于
      It seems like a historic accident that these return unsigned char *,
      and in many places that means casts are required, more often than not.
      
      Make these functions (skb_put, __skb_put and pskb_put) return void *
      and remove all the casts across the tree, adding a (u8 *) cast only
      where the unsigned char pointer was used directly, all done with the
      following spatch:
      
          @@
          expression SKB, LEN;
          typedef u8;
          identifier fn = { skb_put, __skb_put };
          @@
          - *(fn(SKB, LEN))
          + *(u8 *)fn(SKB, LEN)
      
          @@
          expression E, SKB, LEN;
          identifier fn = { skb_put, __skb_put };
          type T;
          @@
          - E = ((T *)(fn(SKB, LEN)))
          + E = fn(SKB, LEN)
      
      which actually doesn't cover pskb_put since there are only three
      users overall.
      
      A handful of stragglers were converted manually, notably a macro in
      drivers/isdn/i4l/isdn_bsdcomp.c and, oddly enough, one of the many
      instances in net/bluetooth/hci_sock.c. In the former file, I also
      had to fix one whitespace problem spatch introduced.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4df864c1
    • J
      networking: introduce and use skb_put_data() · 59ae1d12
      Johannes Berg 提交于
      A common pattern with skb_put() is to just want to memcpy()
      some data into the new space, introduce skb_put_data() for
      this.
      
      An spatch similar to the one for skb_put_zero() converts many
      of the places using it:
      
          @@
          identifier p, p2;
          expression len, skb, data;
          type t, t2;
          @@
          (
          -p = skb_put(skb, len);
          +p = skb_put_data(skb, data, len);
          |
          -p = (t)skb_put(skb, len);
          +p = skb_put_data(skb, data, len);
          )
          (
          p2 = (t2)p;
          -memcpy(p2, data, len);
          |
          -memcpy(p, data, len);
          )
      
          @@
          type t, t2;
          identifier p, p2;
          expression skb, data;
          @@
          t *p;
          ...
          (
          -p = skb_put(skb, sizeof(t));
          +p = skb_put_data(skb, data, sizeof(t));
          |
          -p = (t *)skb_put(skb, sizeof(t));
          +p = skb_put_data(skb, data, sizeof(t));
          )
          (
          p2 = (t2)p;
          -memcpy(p2, data, sizeof(*p));
          |
          -memcpy(p, data, sizeof(*p));
          )
      
          @@
          expression skb, len, data;
          @@
          -memcpy(skb_put(skb, len), data, len);
          +skb_put_data(skb, data, len);
      
      (again, manually post-processed to retain some comments)
      Reviewed-by: NStephen Hemminger <stephen@networkplumber.org>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      59ae1d12
  2. 31 7月, 2014 1 次提交
  3. 05 6月, 2014 1 次提交
    • P
      isdn/capi: fix (middleware) device nodes · d1cadce1
      Paul Bolle 提交于
      Since v2.4 the capi driver used the following device nodes if
      "middleware" support was enabled:
          /dev/capi20
          /dev/capi/0
          /dev/capi/1
          [...]
      
      /dev/capi20 is a character device node. /dev/capi/0 (and up) are tty
      device nodes (with a different major).
      
      This device node (naming) scheme is not documented anywhere, as far as I
      know. It was originally provided by the capifs pseudo filesystem (before
      udev became available). It is required for example by the pppd
      capiplugin. It was supported until a few years ago. But a number of
      developments broke it:
      - v2.6.6 (May 2004) renamed /dev/capi20 to /dev/capi and removed the
        "/" from the name of capi's tty driver. The explanation of the patch
        that did this included two examples of udev rules "to restore the old
        namespace";
      - either udev 154 (May 2010) or udev 179 (January 2012) stopped
        allowing to rename device nodes, and thus the ability to have
        /dev/capi20 appear instead of /dev/capi and /dev/capi/0 (and up)
        instead of /dev/capi0 (and up);
      - v3.0 (July 2011) also removed capifs. That disabled another method to
        create the /dev/capi/0 (and up) device nodes.
      
      So now users need to manually tweak their setup (eg, create /dev/capi/
      and fill that with symlinks) to get things working. This is all rather
      hacky and only discoverable by searching the web. Fix all this by
      renaming /dev/capi back to /dev/capi20, and by setting the name of the
      "capi_nc" tty driver to "capi!" so the tty device nodes appear as
      /dev/capi/0 (and up).
      Signed-off-by: NPaul Bolle <pebolle@tiscali.nl>
      Signed-off-by: NTilman Schmidt <tilman@imap.cc>
      Acked-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d1cadce1
  4. 19 3月, 2013 1 次提交
  5. 16 11月, 2012 1 次提交
  6. 14 8月, 2012 1 次提交
    • J
      TTY: use tty_port_register_device · 734cc178
      Jiri Slaby 提交于
      Currently we have no way to assign tty->port while performing tty
      installation. There are two ways to provide the link tty_struct =>
      tty_port. Either by calling tty_port_install from tty->ops->install or
      tty_port_register_device called instead of tty_register_device when
      the device is being set up after connected.
      
      In this patch we modify most of the drivers to do the latter. When the
      drivers use tty_register_device and we have tty_port already, we
      switch to tty_port_register_device. So we have the tty_struct =>
      tty_port link for free for those.
      Signed-off-by: NJiri Slaby <jslaby@suse.cz>
      Acked-by: NAlan Cox <alan@linux.intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      734cc178
  7. 08 5月, 2012 2 次提交
  8. 09 3月, 2012 2 次提交
  9. 05 3月, 2012 1 次提交
  10. 22 2月, 2012 1 次提交
    • J
      isdn: whitespace coding style cleanup · 475be4d8
      Joe Perches 提交于
      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: NJoe Perches <joe@perches.com>
      475be4d8
  11. 03 2月, 2012 1 次提交
  12. 20 5月, 2011 1 次提交
  13. 07 4月, 2011 1 次提交
  14. 18 2月, 2011 1 次提交
  15. 13 7月, 2010 2 次提交
    • J
      54cbb1ca
    • A
      isdn: autoconvert trivial BKL users to private mutex · 76a64921
      Arnd Bergmann 提交于
      All these files use the big kernel lock in a trivial
      way to serialize their private file operations,
      typically resulting from an earlier semi-automatic
      pushdown from VFS.
      
      None of these drivers appears to want to lock against
      other code, and they all use the BKL as the top-level
      lock in their file operations, meaning that there
      is no lock-order inversion problem.
      
      Consequently, we can remove the BKL completely,
      replacing it with a per-file mutex in every case.
      Using a scripted approach means we can avoid
      typos.
      
      file=$1
      name=$2
      if grep -q lock_kernel ${file} ; then
          if grep -q 'include.*linux.mutex.h' ${file} ; then
                  sed -i '/include.*<linux\/smp_lock.h>/d' ${file}
          else
                  sed -i 's/include.*<linux\/smp_lock.h>.*$/include <linux\/mutex.h>/g' ${file}
          fi
          sed -i ${file} \
              -e "/^#include.*linux.mutex.h/,$ {
                      1,/^\(static\|int\|long\)/ {
                           /^\(static\|int\|long\)/istatic DEFINE_MUTEX(${name}_mutex);
      
      } }"  \
          -e "s/\(un\)*lock_kernel\>[ ]*()/mutex_\1lock(\&${name}_mutex)/g" \
          -e '/[      ]*cycle_kernel_lock();/d'
      else
          sed -i -e '/include.*\<smp_lock.h\>/d' ${file}  \
                      -e '/cycle_kernel_lock()/d'
      fi
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Karsten Keil <isdn@linux-pingi.de>
      Cc: netdev@vger.kernel.org
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      76a64921
  16. 17 5月, 2010 1 次提交
  17. 17 2月, 2010 20 次提交