]> Pileus Git - ~andy/linux/commitdiff
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 30 Apr 2008 15:45:48 +0000 (08:45 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 30 Apr 2008 15:45:48 +0000 (08:45 -0700)
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (53 commits)
  tcp: Overflow bug in Vegas
  [IPv4] UFO: prevent generation of chained skb destined to UFO device
  iwlwifi: move the selects to the tristate drivers
  ipv4: annotate a few functions __init in ipconfig.c
  atm: ambassador: vcc_sf semaphore to mutex
  MAINTAINERS: The socketcan-core list is subscribers-only.
  netfilter: nf_conntrack: padding breaks conntrack hash on ARM
  ipv4: Update MTU to all related cache entries in ip_rt_frag_needed()
  sch_sfq: use del_timer_sync() in sfq_destroy()
  net: Add compat support for getsockopt (MCAST_MSFILTER)
  net: Several cleanups for the setsockopt compat support.
  ipvs: fix oops in backup for fwmark conn templates
  bridge: kernel panic when unloading bridge module
  bridge: fix error handling in br_add_if()
  netfilter: {nfnetlink,ip,ip6}_queue: fix skb_over_panic when enlarging packets
  netfilter: x_tables: fix net namespace leak when reading /proc/net/xxx_tables_names
  netfilter: xt_TCPOPTSTRIP: signed tcphoff for ipv6_skip_exthdr() retval
  tcp: Limit cwnd growth when deferring for GSO
  tcp: Allow send-limited cwnd to grow up to max_burst when gso disabled
  [netdrvr] gianfar: Determine TBIPA value dynamically
  ...

1  2 
MAINTAINERS
drivers/net/Kconfig
drivers/net/Makefile
drivers/s390/cio/ccwgroup.c

diff --combined MAINTAINERS
index f822c04f1aeae77d2df2a43de57e94777b998fa1,68c61420b59d1b1c96eb0d639966a6e8740f55b1..f8d6de111479dad7fc91561bba6ae22298b1f64a
@@@ -486,12 -486,6 +486,12 @@@ M:       kernel@wantstofly.or
  L:    linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
  S:    Maintained
  
 +ARM/GUMSTIX MACHINE SUPPORT
 +P:    Steve Sakoman
 +M:    sakoman@gmail.com
 +L:    linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
 +S:    Maintained
 +
  ARM/HP JORNADA 7XX MACHINE SUPPORT
  P:      Kristoffer Ericson
  M:      kristoffer.ericson@gmail.com
@@@ -684,11 -678,6 +684,11 @@@ L:       linux-wireless@vger.kernel.or
  L:    ath5k-devel@lists.ath5k.org
  S:    Maintained
  
 +ATI_REMOTE2 DRIVER
 +P:    Ville Syrjala
 +M:    syrjala@sci.fi
 +S:    Maintained
 +
  ATL1 ETHERNET DRIVER
  P:    Jay Cliburn
  M:    jcliburn@gmail.com
@@@ -752,13 -741,11 +752,13 @@@ W:      http://atmelwlandriver.sourceforge.n
  S:    Maintained
  
  AUDIT SUBSYSTEM
 -P:    David Woodhouse
 -M:    dwmw2@infradead.org
 +P:    Al Viro
 +M:    viro@zeniv.linux.org.uk
 +P:    Eric Paris
 +M:    eparis@redhat.com
  L:    linux-audit@redhat.com (subscribers-only)
  W:    http://people.redhat.com/sgrubb/audit/
 -T:    git kernel.org:/pub/scm/linux/kernel/git/dwmw2/audit-2.6.git
 +T:    git git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current.git
  S:    Maintained
  
  AUXILIARY DISPLAY DRIVERS
@@@ -1039,7 -1026,7 +1039,7 @@@ P:      Urs Thuerman
  M:    urs.thuermann@volkswagen.de
  P:    Oliver Hartkopp
  M:    oliver.hartkopp@volkswagen.de
- L:    socketcan-core@lists.berlios.de
+ L:    socketcan-core@lists.berlios.de (subscribers-only)
  W:    http://developer.berlios.de/projects/socketcan/
  S:    Maintained
  
@@@ -1108,12 -1095,6 +1108,12 @@@ M:    kernel@wantstofly.or
  L:    linux-usb@vger.kernel.org
  S:    Maintained
  
 +CIRRUS LOGIC CS4270 SOUND DRIVER
 +P:    Timur Tabi
 +M:    timur@freescale.com
 +L:    alsa-devel@alsa-project.org
 +S:    Supported
 +
  CIRRUS LOGIC CS4280/CS461x SOUNDDRIVER
  P:    Cirrus Logic Corporation (kernel 2.2 driver)
  M:    Cirrus Logic Corporation, Thomas Woller <twoller@crystal.cirrus.com>
@@@ -1636,12 -1617,6 +1636,12 @@@ L:    linuxppc-dev@ozlabs.or
  L:    netdev@vger.kernel.org
  S:    Maintained
  
 +FREESCALE QUICC ENGINE LIBRARY
 +P:    Timur Tabi
 +M:    timur@freescale.com
 +L:    linuxppc-dev@ozlabs.org
 +S:    Supported
 +
  FREESCALE HIGHSPEED USB DEVICE DRIVER
  P:    Li Yang
  M:    leoli@freescale.com
@@@ -1656,19 -1631,6 +1656,19 @@@ L:    netdev@vger.kernel.or
  L:    linuxppc-dev@ozlabs.org
  S:    Maintained
  
 +FREESCALE QUICC ENGINE UCC UART DRIVER
 +P:    Timur Tabi
 +M:    timur@freescale.com
 +L:    linuxppc-dev@ozlabs.org
 +S:    Supported
 +
 +FREESCALE SOC SOUND DRIVERS
 +P:    Timur Tabi
 +M:    timur@freescale.com
 +L:    alsa-devel@alsa-project.org
 +L:    linuxppc-dev@ozlabs.org
 +S:    Supported
 +
  FILE LOCKING (flock() and fcntl()/lockf())
  P:    Matthew Wilcox
  M:    matthew@wil.cx
@@@ -2331,13 -2293,6 +2331,13 @@@ L:    kvm-devel@lists.sourceforge.ne
  W:    kvm.sourceforge.net
  S:    Supported
  
 +KERNEL VIRTUAL MACHINE (KVM) FOR POWERPC
 +P:    Hollis Blanchard
 +M:    hollisb@us.ibm.com
 +L:    kvm-ppc-devel@lists.sourceforge.net
 +W:    kvm.sourceforge.net
 +S:    Supported
 +
  KERNEL VIRTUAL MACHINE For Itanium(KVM/IA64)
  P:    Anthony Xu
  M:    anthony.xu@intel.com
@@@ -2347,16 -2302,6 +2347,16 @@@ L:    kvm-ia64-devel@lists.sourceforge.ne
  W:    kvm.sourceforge.net
  S:    Supported
  
 +KERNEL VIRTUAL MACHINE for s390 (KVM/s390)
 +P:    Carsten Otte
 +M:    cotte@de.ibm.com
 +P:    Christian Borntraeger
 +M:    borntraeger@de.ibm.com
 +M:    linux390@de.ibm.com
 +L:    linux-s390@vger.kernel.org
 +W:    http://www.ibm.com/developerworks/linux/linux390/
 +S:    Supported
 +
  KEXEC
  P:    Eric Biederman
  M:    ebiederm@xmission.com
@@@ -2696,7 -2641,7 +2696,7 @@@ P:      David Howell
  M:    dhowells@redhat.com
  P:    Koichi Yasutake
  M:    yasutake.koichi@jp.panasonic.com
 -L:    linux-am33-list@redhat.com
 +L:    linux-am33-list@redhat.com (moderated for non-subscribers)
  W:    ftp://ftp.redhat.com/pub/redhat/gnupro/AM33/
  S:    Maintained
  
@@@ -2759,7 -2704,7 +2759,7 @@@ M:      rubini@ipvvis.unipv.i
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
  
 -MOXA SMARTIO/INDUSTIO SERIAL CARD (MXSER 2.0)
 +MOXA SMARTIO/INDUSTIO/INTELLIO SERIAL CARD
  P:    Jiri Slaby
  M:    jirislaby@gmail.com
  L:    linux-kernel@vger.kernel.org
@@@ -2994,7 -2939,7 +2994,7 @@@ P:      Mark Fashe
  M:    mfasheh@suse.com
  P:    Joel Becker
  M:    joel.becker@oracle.com
 -L:    ocfs2-devel@oss.oracle.com
 +L:    ocfs2-devel@oss.oracle.com (moderated for non-subscribers)
  W:    http://oss.oracle.com/projects/ocfs2/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2.git
  S:    Supported
@@@ -3112,11 -3057,11 +3112,11 @@@ L:   linux-pci@atrey.karlin.mff.cuni.c
  S:    Supported
  
  PCI SUBSYSTEM
 -P:    Greg Kroah-Hartman
 -M:    gregkh@suse.de
 +P:    Jesse Barnes
 +M:    jbarnes@virtuousgeek.org
  L:    linux-kernel@vger.kernel.org
  L:    linux-pci@atrey.karlin.mff.cuni.cz
 -T:    quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
 +T:    git kernel.org:/pub/scm/linux/kernel/git/jbarnes/pci-2.6.git
  S:    Supported
  
  PCI HOTPLUG CORE
@@@ -3577,6 -3522,13 +3577,13 @@@ M:    pfg@sgi.co
  L:    linux-ia64@vger.kernel.org
  S:    Supported
  
+ SFC NETWORK DRIVER
+ P:    Steve Hodgson
+ P:    Ben Hutchings
+ P:    Robert Stonehouse
+ M:    linux-net-drivers@solarflare.com
+ S:    Supported
  SGI VISUAL WORKSTATION 320 AND 540
  P:    Andrey Panin
  M:    pazke@donpac.ru
@@@ -3657,11 -3609,6 +3664,11 @@@ M:    mhoffman@lightlink.co
  L:    lm-sensors@lm-sensors.org
  S:    Maintained
  
 +SMX UIO Interface
 +P:    Ben Nizette
 +M:    bn@niasdigital.com
 +S:    Maintained
 +
  SOFTWARE RAID (Multiple Disks) SUPPORT
  P:    Ingo Molnar
  M:    mingo@redhat.com
@@@ -3743,6 -3690,42 +3750,6 @@@ M:     chrisw@sous-sol.or
  L:    stable@kernel.org
  S:    Maintained
  
 -TPM DEVICE DRIVER
 -P:    Kylene Hall
 -M:    tpmdd-devel@lists.sourceforge.net
 -W:    http://tpmdd.sourceforge.net
 -P:    Marcel Selhorst
 -M:    tpm@selhorst.net
 -W:    http://www.prosec.rub.de/tpm/
 -L:    tpmdd-devel@lists.sourceforge.net
 -S:    Maintained
 -
 -Telecom Clock Driver for MCPL0010
 -P:    Mark Gross
 -M:    mark.gross@intel.com
 -S:    Supported
 -
 -TENSILICA XTENSA PORT (xtensa):
 -P:    Chris Zankel
 -M:    chris@zankel.net
 -S:    Maintained
 -
 -THINKPAD ACPI EXTRAS DRIVER
 -P:    Henrique de Moraes Holschuh
 -M:    ibm-acpi@hmh.eng.br
 -L:    ibm-acpi-devel@lists.sourceforge.net
 -W:    http://ibm-acpi.sourceforge.net
 -W:    http://thinkwiki.org/wiki/Ibm-acpi
 -T:    git repo.or.cz/linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git
 -S:    Maintained
 -
 -UltraSPARC (sparc64):
 -P:    David S. Miller
 -M:    davem@davemloft.net
 -L:    sparclinux@vger.kernel.org
 -T:    git kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6.git
 -S:    Maintained
 -
  SHARP LH SUPPORT (LH7952X & LH7A40X)
  P:    Marc Singer
  M:    elf@buici.com
@@@ -3839,12 -3822,6 +3846,12 @@@ P:    Christoph Hellwi
  M:    hch@infradead.org
  S:    Maintained
  
 +TASKSTATS STATISTICS INTERFACE
 +P:    Shailabh Nagar
 +M:    nagar@watson.ibm.com
 +L:    linux-kernel@vger.kernel.org
 +S:    Maintained
 +
  TC CLASSIFIER
  P:    Jamal Hadi Salim
  M:    hadi@cyberus.ca
@@@ -3867,25 -3844,6 +3874,25 @@@ M:    andy@greyhouse.ne
  L:    netdev@vger.kernel.org
  S:    Supported
  
 +Telecom Clock Driver for MCPL0010
 +P:    Mark Gross
 +M:    mark.gross@intel.com
 +S:    Supported
 +
 +TENSILICA XTENSA PORT (xtensa):
 +P:    Chris Zankel
 +M:    chris@zankel.net
 +S:    Maintained
 +
 +THINKPAD ACPI EXTRAS DRIVER
 +P:    Henrique de Moraes Holschuh
 +M:    ibm-acpi@hmh.eng.br
 +L:    ibm-acpi-devel@lists.sourceforge.net
 +W:    http://ibm-acpi.sourceforge.net
 +W:    http://thinkwiki.org/wiki/Ibm-acpi
 +T:    git repo.or.cz/linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git
 +S:    Maintained
 +
  TI FLASH MEDIA INTERFACE DRIVER
  P:      Alex Dubov
  M:      oakad@yahoo.com
@@@ -3903,6 -3861,12 +3910,6 @@@ P:     Deepak Saxen
  M:    dsaxena@plexity.net
  S:    Maintained
  
 -TASKSTATS STATISTICS INTERFACE
 -P:    Shailabh Nagar
 -M:    nagar@watson.ibm.com
 -L:    linux-kernel@vger.kernel.org
 -S:    Maintained
 -
  TIPC NETWORK LAYER
  P:    Per Liden
  M:    per.liden@ericsson.com
@@@ -3936,16 -3900,6 +3943,16 @@@ L:    tlinux-users@tce.toshiba-dme.co.j
  W:    http://www.buzzard.org.uk/toshiba/
  S:    Maintained
  
 +TPM DEVICE DRIVER
 +P:    Kylene Hall
 +M:    tpmdd-devel@lists.sourceforge.net
 +W:    http://tpmdd.sourceforge.net
 +P:    Marcel Selhorst
 +M:    tpm@selhorst.net
 +W:    http://www.prosec.rub.de/tpm/
 +L:    tpmdd-devel@lists.sourceforge.net
 +S:    Maintained
 +
  TRIDENT 4DWAVE/SIS 7018 PCI AUDIO CORE
  P:    Muli Ben-Yehuda
  M:    mulix@mulix.org
@@@ -3958,12 -3912,6 +3965,12 @@@ M:    trivial@kernel.or
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
  
 +TTY LAYER
 +P:    Alan Cox
 +M:    alan@lxorguk.ukuu.org.uk
 +L:    linux-kernel@vger.kernel.org
 +S:    Maintained
 +
  TULIP NETWORK DRIVERS
  P:    Grant Grundler
  M:    grundler@parisc-linux.org
@@@ -4132,20 -4080,6 +4139,20 @@@ L:      linux-usb@vger.kernel.or
  W:    http://www.chello.nl/~j.vreeken/se401/
  S:    Maintained
  
 +USB SERIAL BELKIN F5U103 DRIVER
 +P:    William Greathouse
 +M:    wgreathouse@smva.com
 +L:      linux-usb@vger.kernel.org
 +S:    Maintained
 +
 +USB SERIAL CYPRESS M8 DRIVER
 +P:    Lonnie Mendez
 +M:    dignome@gmail.com
 +L:      linux-usb@vger.kernel.org
 +S:    Maintained
 +W:    http://geocities.com/i0xox0i
 +W:    http://firstlight.net/cvs
 +
  USB SERIAL CYBERJACK DRIVER
  P:    Matthias Bruestle and Harald Welte
  M:    support@reiner-sct.com
@@@ -4165,6 -4099,20 +4172,6 @@@ M:     gregkh@suse.d
  L:      linux-usb@vger.kernel.org
  S:    Supported
  
 -USB SERIAL BELKIN F5U103 DRIVER
 -P:    William Greathouse
 -M:    wgreathouse@smva.com
 -L:      linux-usb@vger.kernel.org
 -S:    Maintained
 -
 -USB SERIAL CYPRESS M8 DRIVER
 -P:    Lonnie Mendez
 -M:    dignome@gmail.com
 -L:      linux-usb@vger.kernel.org
 -S:    Maintained
 -W:    http://geocities.com/i0xox0i
 -W:    http://firstlight.net/cvs
 -
  USB SERIAL EMPEG EMPEG-CAR MARK I/II DRIVER
  P:    Gary Brubaker
  M:    xavyer@ix.netcom.com
@@@ -4267,7 -4215,7 +4274,7 @@@ M:      gregkh@suse.d
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
  
 -FAT/VFAT/MSDOS FILESYSTEM:
 +VFAT/FAT/MSDOS FILESYSTEM:
  P:    OGAWA Hirofumi
  M:    hirofumi@mail.parknet.co.jp
  L:    linux-kernel@vger.kernel.org
@@@ -4312,13 -4260,6 +4319,13 @@@ M:    dushistov@mail.r
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
  
 +UltraSPARC (sparc64):
 +P:    David S. Miller
 +M:    davem@davemloft.net
 +L:    sparclinux@vger.kernel.org
 +T:    git kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6.git
 +S:    Maintained
 +
  USB DIAMOND RIO500 DRIVER
  P:    Cesar Miquel
  M:    miquel@df.uba.ar
@@@ -4407,16 -4348,6 +4414,16 @@@ L:    linux-wireless@vger.kernel.or
  W:    http://oops.ghostprotocols.net:81/blog
  S:    Maintained
  
 +WM97XX TOUCHSCREEN DRIVERS
 +P:    Mark Brown
 +M:    broonie@opensource.wolfsonmicro.com
 +P:    Liam Girdwood
 +M:    liam.girdwood@wolfsonmicro.com
 +L:    linux-input@vger.kernel.org
 +T:    git git://opensource.wolfsonmicro.com/linux-2.6-touch
 +W:    http://opensource.wolfsonmicro.com/node/7
 +S:    Supported
 +
  X.25 NETWORK LAYER
  P:    Henner Eisen
  M:    eis@baty.hanse.de
diff --combined drivers/net/Kconfig
index f90a86ba7e2f1fbf8fd10860d010ea8e8fd59af9,50b36b408ca126afe6c8fef8e1440bd3af5f4f19..af46341827f27b2220ad63216e38fd7e1ae07366
@@@ -469,7 -469,7 +469,7 @@@ config SNI_8259
  
  config KORINA
        tristate "Korina (IDT RC32434) Ethernet support"
 -      depends on NET_ETHERNET && MIKROTIK_RB500
 +      depends on NET_ETHERNET && MIKROTIK_RB532
        help
          If you have a Mikrotik RouterBoard 500 or IDT RC32434
          based system say Y. Otherwise say N.
@@@ -827,7 -827,7 +827,7 @@@ config ULTRA3
  
  config BFIN_MAC
        tristate "Blackfin 527/536/537 on-chip mac support"
 -      depends on NET_ETHERNET && (BF527 || BF537 || BF536) && (!BF537_PORT_H)
 +      depends on NET_ETHERNET && (BF527 || BF537 || BF536)
        select CRC32
        select MII
        select PHYLIB
@@@ -2011,7 -2011,7 +2011,7 @@@ config E1000_DISABLE_PACKET_SPLI
  
  config E1000E
        tristate "Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support"
 -      depends on PCI
 +      depends on PCI && (!SPARC32 || BROKEN)
        ---help---
          This driver supports the PCI-Express Intel(R) PRO/1000 gigabit
          ethernet family of adapters. For PCI or PCI-X e1000 adapters,
@@@ -2278,7 -2278,6 +2278,7 @@@ config TSI108_ET
  config GELIC_NET
        tristate "PS3 Gigabit Ethernet driver"
        depends on PPC_PS3
 +      select PS3_SYS_MANAGER
        help
          This driver supports the network device on the PS3 game
          console.  This driver has built-in support for Ethernet.
@@@ -2336,7 -2335,7 +2336,7 @@@ config UGETH_TX_ON_DEMAN
  
  config MV643XX_ETH
        tristate "Marvell Discovery (643XX) and Orion ethernet support"
 -      depends on MV64360 || MV64X60 || (PPC_MULTIPLATFORM && PPC32) || ARCH_ORION
 +      depends on MV64360 || MV64X60 || (PPC_MULTIPLATFORM && PPC32) || PLAT_ORION
        select MII
        help
          This driver supports the gigabit ethernet MACs in the
@@@ -2593,6 -2592,7 +2593,7 @@@ config BNX2
          To compile this driver as a module, choose M here: the module
          will be called bnx2x.  This is recommended.
  
+ source "drivers/net/sfc/Kconfig"
  
  endif # NETDEV_10000
  
diff --combined drivers/net/Makefile
index 2f1f3f2739fdf32dc088a883775491da4f3c161e,371cb0785b27d73805dd21388c27441ba991f06e..dcbfe8421154b25a83fd50ab7bf946da955eb65a
@@@ -218,8 -218,7 +218,8 @@@ obj-$(CONFIG_SMC911X) += smc911x.
  obj-$(CONFIG_BFIN_MAC) += bfin_mac.o
  obj-$(CONFIG_DM9000) += dm9000.o
  obj-$(CONFIG_FEC_8XX) += fec_8xx/
 -obj-$(CONFIG_PASEMI_MAC) += pasemi_mac.o
 +obj-$(CONFIG_PASEMI_MAC) += pasemi_mac_driver.o
 +pasemi_mac_driver-objs := pasemi_mac.o pasemi_mac_ethtool.o
  obj-$(CONFIG_MLX4_CORE) += mlx4/
  obj-$(CONFIG_ENC28J60) += enc28j60.o
  
@@@ -253,3 -252,5 +253,5 @@@ obj-$(CONFIG_FS_ENET) += fs_enet
  obj-$(CONFIG_NETXEN_NIC) += netxen/
  obj-$(CONFIG_NIU) += niu.o
  obj-$(CONFIG_VIRTIO_NET) += virtio_net.o
+ obj-$(CONFIG_SFC) += sfc/
index 85b2e51a42ae7ffb806f2266ca04b79c4e556591,f38923e38e92be588d915d8616bd5bb897419b2e..26a930e832bdab58c7f649c866124200e1f3f8c8
@@@ -16,6 -16,7 +16,6 @@@
  #include <linux/ctype.h>
  #include <linux/dcache.h>
  
 -#include <asm/semaphore.h>
  #include <asm/ccwdev.h>
  #include <asm/ccwgroup.h>
  
@@@ -152,44 -153,89 +152,89 @@@ __ccwgroup_create_symlinks(struct ccwgr
        return 0;
  }
  
+ static int __get_next_bus_id(const char **buf, char *bus_id)
+ {
+       int rc, len;
+       char *start, *end;
+       start = (char *)*buf;
+       end = strchr(start, ',');
+       if (!end) {
+               /* Last entry. Strip trailing newline, if applicable. */
+               end = strchr(start, '\n');
+               if (end)
+                       *end = '\0';
+               len = strlen(start) + 1;
+       } else {
+               len = end - start + 1;
+               end++;
+       }
+       if (len < BUS_ID_SIZE) {
+               strlcpy(bus_id, start, len);
+               rc = 0;
+       } else
+               rc = -EINVAL;
+       *buf = end;
+       return rc;
+ }
+ static int __is_valid_bus_id(char bus_id[BUS_ID_SIZE])
+ {
+       int cssid, ssid, devno;
+       /* Must be of form %x.%x.%04x */
+       if (sscanf(bus_id, "%x.%1x.%04x", &cssid, &ssid, &devno) != 3)
+               return 0;
+       return 1;
+ }
  /**
-  * ccwgroup_create() - create and register a ccw group device
+  * ccwgroup_create_from_string() - create and register a ccw group device
   * @root: parent device for the new device
   * @creator_id: identifier of creating driver
   * @cdrv: ccw driver of slave devices
-  * @argc: number of slave devices
-  * @argv: bus ids of slave devices
+  * @num_devices: number of slave devices
+  * @buf: buffer containing comma separated bus ids of slave devices
   *
   * Create and register a new ccw group device as a child of @root. Slave
-  * devices are obtained from the list of bus ids given in @argv[] and must all
+  * devices are obtained from the list of bus ids given in @buf and must all
   * belong to @cdrv.
   * Returns:
   *  %0 on success and an error code on failure.
   * Context:
   *  non-atomic
   */
- int ccwgroup_create(struct device *root, unsigned int creator_id,
-                   struct ccw_driver *cdrv, int argc, char *argv[])
+ int ccwgroup_create_from_string(struct device *root, unsigned int creator_id,
+                               struct ccw_driver *cdrv, int num_devices,
+                               const char *buf)
  {
        struct ccwgroup_device *gdev;
-       int i;
-       int rc;
+       int rc, i;
+       char tmp_bus_id[BUS_ID_SIZE];
+       const char *curr_buf;
  
-       if (argc > 256) /* disallow dumb users */
-               return -EINVAL;
-       gdev = kzalloc(sizeof(*gdev) + argc*sizeof(gdev->cdev[0]), GFP_KERNEL);
+       gdev = kzalloc(sizeof(*gdev) + num_devices * sizeof(gdev->cdev[0]),
+                      GFP_KERNEL);
        if (!gdev)
                return -ENOMEM;
  
        atomic_set(&gdev->onoff, 0);
        mutex_init(&gdev->reg_mutex);
        mutex_lock(&gdev->reg_mutex);
-       for (i = 0; i < argc; i++) {
-               gdev->cdev[i] = get_ccwdev_by_busid(cdrv, argv[i]);
-               /* all devices have to be of the same type in
-                * order to be grouped */
+       curr_buf = buf;
+       for (i = 0; i < num_devices && curr_buf; i++) {
+               rc = __get_next_bus_id(&curr_buf, tmp_bus_id);
+               if (rc != 0)
+                       goto error;
+               if (!__is_valid_bus_id(tmp_bus_id)) {
+                       rc = -EINVAL;
+                       goto error;
+               }
+               gdev->cdev[i] = get_ccwdev_by_busid(cdrv, tmp_bus_id);
+               /*
+                * All devices have to be of the same type in
+                * order to be grouped.
+                */
                if (!gdev->cdev[i]
                    || gdev->cdev[i]->id.driver_info !=
                    gdev->cdev[0]->id.driver_info) {
                }
                dev_set_drvdata(&gdev->cdev[i]->dev, gdev);
        }
+       /* Check for sufficient number of bus ids. */
+       if (i < num_devices && !curr_buf) {
+               rc = -EINVAL;
+               goto error;
+       }
+       /* Check for trailing stuff. */
+       if (i == num_devices && strlen(curr_buf) > 0) {
+               rc = -EINVAL;
+               goto error;
+       }
        gdev->creator_id = creator_id;
-       gdev->count = argc;
+       gdev->count = num_devices;
        gdev->dev.bus = &ccwgroup_bus_type;
        gdev->dev.parent = root;
        gdev->dev.release = ccwgroup_release;
        device_remove_file(&gdev->dev, &dev_attr_ungroup);
        device_unregister(&gdev->dev);
  error:
-       for (i = 0; i < argc; i++)
+       for (i = 0; i < num_devices; i++)
                if (gdev->cdev[i]) {
                        if (dev_get_drvdata(&gdev->cdev[i]->dev) == gdev)
                                dev_set_drvdata(&gdev->cdev[i]->dev, NULL);
        put_device(&gdev->dev);
        return rc;
  }
+ EXPORT_SYMBOL(ccwgroup_create_from_string);
  
  static int __init
  init_ccwgroup (void)
@@@ -318,7 -374,7 +373,7 @@@ ccwgroup_online_store (struct device *d
  {
        struct ccwgroup_device *gdev;
        struct ccwgroup_driver *gdrv;
 -      unsigned int value;
 +      unsigned long value;
        int ret;
  
        gdev = to_ccwgroupdev(dev);
        if (!try_module_get(gdrv->owner))
                return -EINVAL;
  
 -      value = simple_strtoul(buf, NULL, 0);
 +      ret = strict_strtoul(buf, 0, &value);
 +      if (ret)
 +              goto out;
        ret = count;
        if (value == 1)
                ccwgroup_set_online(gdev);
                ccwgroup_set_offline(gdev);
        else
                ret = -EINVAL;
 +out:
        module_put(gdrv->owner);
        return ret;
  }
@@@ -521,6 -574,5 +576,5 @@@ void ccwgroup_remove_ccwdev(struct ccw_
  MODULE_LICENSE("GPL");
  EXPORT_SYMBOL(ccwgroup_driver_register);
  EXPORT_SYMBOL(ccwgroup_driver_unregister);
- EXPORT_SYMBOL(ccwgroup_create);
  EXPORT_SYMBOL(ccwgroup_probe_ccwdev);
  EXPORT_SYMBOL(ccwgroup_remove_ccwdev);