1. 22 6月, 2006 12 次提交
    • D
      [PATCH] USB: move <linux/usb_input.h> to <linux/usb/input.h> · ae0dadcf
      David Brownell 提交于
      Move <linux/usb_input.h> to <linux/usb/input.h> and remove some
      redundant includes.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      ae0dadcf
    • D
      [PATCH] USB: move hardware-specific <linux/usb_*.h> to <linux/usb/*.h> · 325a4af6
      David Brownell 提交于
      This moves header files for controller-specific platform data
      from <linux/usb_XXX.h> to <linux/usb/XXX.h> to start reducing
      some clutter.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      325a4af6
    • D
      [PATCH] USB: move <linux/usb_cdc.h> to <linux/usb/cdc.h> · a8c28f23
      David Brownell 提交于
      This moves <linux/usb_cdc.h> to <linux/usb/cdc.h> to reduce some of the
      clutter of usb header files.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      a8c28f23
    • A
      [PATCH] usbcore: port reset for composite devices · 79efa097
      Alan Stern 提交于
      This patch (as699) adds usb_reset_composite_device(), a routine for
      sending a USB port reset to a device with multiple interfaces owned by
      different drivers.  Drivers are notified about impending and completed
      resets through two new methods in the usb_driver structure.
      
      The patch modifieds the usbfs ioctl code to make it use the new routine
      instead of usb_reset_device().  Follow-up patches will modify the hub,
      usb-storage, and usbhid drivers so they can utilize this new API.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      79efa097
    • G
      [PATCH] USB: add usb_interrupt_msg() function for api completeness. · 782a7a63
      Greg Kroah-Hartman 提交于
      Really just a wrapper around usb_bulk_msg() but now it's documented
      much better.
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      782a7a63
    • R
      [PATCH] Driver model: add ISA bus · a5117ba7
      Rene Herman 提交于
      During the recent "isa drivers using platform devices" discussion it was
      pointed out that (ALSA) ISA drivers ran into the problem of not having
      the option to fail driver load (device registration rather) upon not
      finding their hardware due to a probe() error not being passed up
      through the driver model. In the course of that, I suggested a seperate
      ISA bus might be best; Russell King agreed and suggested this bus could
      use the .match() method for the actual device discovery.
      
      The attached does this. For this old non (generically) discoverable ISA
      hardware only the driver itself can do discovery so as a difference with
      the platform_bus, this isa_bus also distributes match() up to the driver.
      
      As another difference: these devices only exist in the driver model due
      to the driver creating them because it might want to drive them, meaning
      that all device creation has been made internal as well.
      
      The usage model this provides is nice, and has been acked from the ALSA
      side by Takashi Iwai and Jaroslav Kysela. The ALSA driver module_init's
      now (for oldisa-only drivers) become:
      
      static int __init alsa_card_foo_init(void)
      {
      	return isa_register_driver(&snd_foo_isa_driver, SNDRV_CARDS);
      }
      
      static void __exit alsa_card_foo_exit(void)
      {
      	isa_unregister_driver(&snd_foo_isa_driver);
      }
      
      Quite like the other bus models therefore. This removes a lot of
      duplicated init code from the ALSA ISA drivers.
      
      The passed in isa_driver struct is the regular driver struct embedding a
      struct device_driver, the normal probe/remove/shutdown/suspend/resume
      callbacks, and as indicated that .match callback.
      
      The "SNDRV_CARDS" you see being passed in is a "unsigned int ndev"
      parameter, indicating how many devices to create and call our methods with.
      
      The platform_driver callbacks are called with a platform_device param;
      the isa_driver callbacks are being called with a "struct device *dev,
      unsigned int id" pair directly -- with the device creation completely
      internal to the bus it's much cleaner to not leak isa_dev's by passing
      them in at all. The id is the only thing we ever want other then the
      struct device * anyways, and it makes for nicer code in the callbacks as
      well.
      
      With this additional .match() callback ISA drivers have all options. If
      ALSA would want to keep the old non-load behaviour, it could stick all
      of the old .probe in .match, which would only keep them registered after
      everything was found to be present and accounted for. If it wanted the
      behaviour of always loading as it inadvertently did for a bit after the
      changeover to platform devices, it could just not provide a .match() and
      do everything in .probe() as before.
      
      If it, as Takashi Iwai already suggested earlier as a way of following
      the model from saner buses more closely, wants to load when a later bind
      could conceivably succeed, it could use .match() for the prerequisites
      (such as checking the user wants the card enabled and that port/irq/dma
      values have been passed in) and .probe() for everything else. This is
      the nicest model.
      
      To the code...
      
      This exports only two functions; isa_{,un}register_driver().
      
      isa_register_driver() register's the struct device_driver, and then
      loops over the passed in ndev creating devices and registering them.
      This causes the bus match method to be called for them, which is:
      
      int isa_bus_match(struct device *dev, struct device_driver *driver)
      {
                struct isa_driver *isa_driver = to_isa_driver(driver);
      
                if (dev->platform_data == isa_driver) {
                        if (!isa_driver->match ||
                                isa_driver->match(dev, to_isa_dev(dev)->id))
                                return 1;
                        dev->platform_data = NULL;
                }
                return 0;
      }
      
      The first thing this does is check if this device is in fact one of this
      driver's devices by seeing if the device's platform_data pointer is set
      to this driver. Platform devices compare strings, but we don't need to
      do that with everything being internal, so isa_register_driver() abuses
      dev->platform_data as a isa_driver pointer which we can then check here.
      I believe platform_data is available for this, but if rather not, moving
      the isa_driver pointer to the private struct isa_dev is ofcourse fine as
      well.
      
      Then, if the the driver did not provide a .match, it matches. If it did,
      the driver match() method is called to determine a match.
      
      If it did _not_ match, dev->platform_data is reset to indicate this to
      isa_register_driver which can then unregister the device again.
      
      If during all this, there's any error, or no devices matched at all
      everything is backed out again and the error, or -ENODEV, is returned.
      
      isa_unregister_driver() just unregisters the matched devices and the
      driver itself.
      
      More global points/questions...
      
      - I'm introducing include/linux/isa.h. It was available but is ofcourse
      a somewhat generic name. Moving more isa stuff over to it in time is
      ofcourse fine, so can I have it please? :)
      
      - I'm using device_initcall() and added the isa.o (dependent on
      CONFIG_ISA) after the base driver model things in the Makefile. Will
      this do, or I really need to stick it in drivers/base/init.c, inside
      #ifdef CONFIG_ISA? It's working fine.
      
      Lastly -- I also looked, a bit, into integrating with PnP. "Old ISA"
      could be another pnp_protocol, but this does not seem to be a good
      match, largely due to the same reason platform_devices weren't -- the
      devices do not have a life of their own outside the driver, meaning the
      pnp_protocol {get,set}_resources callbacks would need to callback into
      driver -- which again means you first need to _have_ that driver. Even
      if there's clean way around that, you only end up inventing fake but
      valid-form PnP IDs and generally catering to the PnP layer without any
      practical advantages over this very simple isa_bus. The thing I also
      suggested earlier about the user echoing values into /sys to set up the
      hardware from userspace first is... well, cute, but a horrible idea from
      a user standpoint.
      
      Comments ofcourse appreciated. Hope it's okay. As said, the usage model
      is nice at least.
      Signed-off-by: NRene Herman <rene.herman@keyaccess.nl>
      a5117ba7
    • A
      [PATCH] Driver Core: Make dev_info and friends print the bus name if there is no driver · 3e95637a
      Alan Stern 提交于
      This patch (as721) makes dev_info and related macros print the device's
      bus name if the device doesn't have a driver, instead of printing just a
      blank.  If the device isn't on a bus either... well, then it does leave
      a blank space.  But it will be easier for someone else to change if they
      want.
      
      Cc: Matthew Wilcox <matthew@wil.cx>
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      3e95637a
    • G
      [PATCH] Driver core: allow struct device to have a dev_t · 23681e47
      Greg Kroah-Hartman 提交于
      This is the first step in moving class_device to being replaced by
      struct device.  It allows struct device to export a dev_t and makes it
      easy to dynamically create and destroy struct device as long as they are
      associated with a specific class.
      
      Cc: Kay Sievers <kay.sievers@vrfy.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      23681e47
    • M
      [PATCH] Driver Core: Add /sys/hypervisor when needed · 4039483f
      Michael Holzheu 提交于
      To have a home for all hypervisors, this patch creates /sys/hypervisor.
      A new config option SYS_HYPERVISOR is introduced, which should to be set
      by architecture dependent hypervisors (e.g. s390 or Xen).
      Acked-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: NMichael Holzheu <holzheu@de.ibm.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      4039483f
    • S
      [PATCH] Driver Core: Allow sysdev_class have attributes · 670dd90d
      Shaohua Li 提交于
      allow sysdev_class adding attribute. Next patch will use the new API to
      add an attribute under /sys/device/system/cpu/.
      Signed-off-by: NShaohua Li <shaohua.li@intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      670dd90d
    • G
      [PATCH] Driver Core: remove unused exports · 1740757e
      Greg Kroah-Hartman 提交于
      Cc: Arjan van de Ven <arjan@linux.intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      1740757e
    • H
      [PATCH] TTY: return class device pointer from tty_register_device() · 1cdcb6b4
      Hansjoerg Lipp 提交于
      Let tty_register_device() return a pointer to the class device it creates.
      This allows registrants to add their own sysfs files under the class
      device node.
      Signed-off-by: NHansjoerg Lipp <hjlipp@web.de>
      Signed-off-by: NTilman Schmidt <tilman@imap.cc>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      1cdcb6b4
  2. 21 6月, 2006 11 次提交
  3. 20 6月, 2006 17 次提交
    • A
      [PATCH] log more info for directory entry change events · 9c937dcc
      Amy Griffis 提交于
      When an audit event involves changes to a directory entry, include
      a PATH record for the directory itself.  A few other notable changes:
      
          - fixed audit_inode_child() hooks in fsnotify_move()
          - removed unused flags arg from audit_inode()
          - added audit log routines for logging a portion of a string
      
      Here's some sample output.
      
      before patch:
      type=SYSCALL msg=audit(1149821605.320:26): arch=40000003 syscall=39 success=yes exit=0 a0=bf8d3c7c a1=1ff a2=804e1b8 a3=bf8d3c7c items=1 ppid=739 pid=800 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=ttyS0 comm="mkdir" exe="/bin/mkdir" subj=root:system_r:unconfined_t:s0-s0:c0.c255
      type=CWD msg=audit(1149821605.320:26):  cwd="/root"
      type=PATH msg=audit(1149821605.320:26): item=0 name="foo" parent=164068 inode=164010 dev=03:00 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=root:object_r:user_home_t:s0
      
      after patch:
      type=SYSCALL msg=audit(1149822032.332:24): arch=40000003 syscall=39 success=yes exit=0 a0=bfdd9c7c a1=1ff a2=804e1b8 a3=bfdd9c7c items=2 ppid=714 pid=777 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=ttyS0 comm="mkdir" exe="/bin/mkdir" subj=root:system_r:unconfined_t:s0-s0:c0.c255
      type=CWD msg=audit(1149822032.332:24):  cwd="/root"
      type=PATH msg=audit(1149822032.332:24): item=0 name="/root" inode=164068 dev=03:00 mode=040750 ouid=0 ogid=0 rdev=00:00 obj=root:object_r:user_home_dir_t:s0
      type=PATH msg=audit(1149822032.332:24): item=1 name="foo" inode=164010 dev=03:00 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=root:object_r:user_home_t:s0
      Signed-off-by: NAmy Griffis <amy.griffis@hp.com>
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      9c937dcc
    • A
      [PATCH] audit: path-based rules · f368c07d
      Amy Griffis 提交于
      In this implementation, audit registers inotify watches on the parent
      directories of paths specified in audit rules.  When audit's inotify
      event handler is called, it updates any affected rules based on the
      filesystem event.  If the parent directory is renamed, removed, or its
      filesystem is unmounted, audit removes all rules referencing that
      inotify watch.
      
      To keep things simple, this implementation limits location-based
      auditing to the directory entries in an existing directory.  Given
      a path-based rule for /foo/bar/passwd, the following table applies:
      
          passwd modified -- audit event logged
          passwd replaced -- audit event logged, rules list updated
          bar renamed     -- rule removed
          foo renamed     -- untracked, meaning that the rule now applies to
      		       the new location
      
      Audit users typically want to have many rules referencing filesystem
      objects, which can significantly impact filtering performance.  This
      patch also adds an inode-number-based rule hash to mitigate this
      situation.
      
      The patch is relative to the audit git tree:
      http://kernel.org/git/?p=linux/kernel/git/viro/audit-current.git;a=summary
      and uses the inotify kernel API:
      http://lkml.org/lkml/2006/6/1/145Signed-off-by: NAmy Griffis <amy.griffis@hp.com>
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      f368c07d
    • G
      [PATCH] Audit of POSIX Message Queue Syscalls v.2 · 20ca73bc
      George C. Wilson 提交于
      This patch adds audit support to POSIX message queues.  It applies cleanly to
      the lspp.b15 branch of Al Viro's git tree.  There are new auxiliary data
      structures, and collection and emission routines in kernel/auditsc.c.  New hooks
      in ipc/mqueue.c collect arguments from the syscalls.
      
      I tested the patch by building the examples from the POSIX MQ library tarball.
      Build them -lrt, not against the old MQ library in the tarball.  Here's the URL:
      http://www.geocities.com/wronski12/posix_ipc/libmqueue-4.41.tar.gz
      Do auditctl -a exit,always -S for mq_open, mq_timedsend, mq_timedreceive,
      mq_notify, mq_getsetattr.  mq_unlink has no new hooks.  Please see the
      corresponding userspace patch to get correct output from auditd for the new
      record types.
      
      [fixes folded]
      Signed-off-by: NGeorge Wilson <ltcgcw@us.ibm.com>
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      20ca73bc
    • A
      [PATCH] inline more audit helpers · d8945bb5
      Al Viro 提交于
      pull checks for ->audit_context into inlined wrappers
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      d8945bb5
    • L
      [PATCH] update of IPC audit record cleanup · ac03221a
      Linda Knippers 提交于
      The following patch addresses most of the issues with the IPC_SET_PERM
      records as described in:
      https://www.redhat.com/archives/linux-audit/2006-May/msg00010.html
      and addresses the comments I received on the record field names.
      
      To summarize, I made the following changes:
      
      1. Changed sys_msgctl() and semctl_down() so that an IPC_SET_PERM
         record is emitted in the failure case as well as the success case.
         This matches the behavior in sys_shmctl().  I could simplify the
         code in sys_msgctl() and semctl_down() slightly but it would mean
         that in some error cases we could get an IPC_SET_PERM record
         without an IPC record and that seemed odd.
      
      2. No change to the IPC record type, given no feedback on the backward
         compatibility question.
      
      3. Removed the qbytes field from the IPC record.  It wasn't being
         set and when audit_ipc_obj() is called from ipcperms(), the
         information isn't available.  If we want the information in the IPC
         record, more extensive changes will be necessary.  Since it only
         applies to message queues and it isn't really permission related, it
         doesn't seem worth it.
      
      4. Removed the obj field from the IPC_SET_PERM record.  This means that
         the kern_ipc_perm argument is no longer needed.
      
      5. Removed the spaces and renamed the IPC_SET_PERM field names.  Replaced iuid and
         igid fields with ouid and ogid in the IPC record.
      
      I tested this with the lspp.22 kernel on an x86_64 box.  I believe it
      applies cleanly on the latest kernel.
      
      -- ljk
      Signed-off-by: NLinda Knippers <linda.knippers@hp.com>
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      ac03221a
    • A
      [PATCH] add filtering by ppid · 3c66251e
      Al Viro 提交于
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      3c66251e
    • A
      [PATCH] collect sid of those who send signals to auditd · e1396065
      Al Viro 提交于
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      e1396065
    • A
      [PATCH] execve argument logging · 473ae30b
      Al Viro 提交于
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      473ae30b
    • A
      [PATCH] audit_panic() is audit-internal · bc0f3b8e
      Al Viro 提交于
      ... no need to provide a stub; note that extern is already gone from
      include/linux/audit.h
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      bc0f3b8e
    • A
      [PATCH] inotify (4/5): allow watch removal from event handler · 3ca10067
      Amy Griffis 提交于
      Allow callers to remove watches from their event handler via
      inotify_remove_watch_locked().  This functionality can be used to
      achieve IN_ONESHOT-like functionality for a subset of events in the
      mask.
      Signed-off-by: NAmy Griffis <amy.griffis@hp.com>
      Acked-by: NRobert Love <rml@novell.com>
      Acked-by: NJohn McCutchan <john@johnmccutchan.com>
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      3ca10067
    • A
      [PATCH] inotify (3/5): add interfaces to kernel API · a9dc971d
      Amy Griffis 提交于
      Add inotify_init_watch() so caller can use inotify_watch refcounts
      before calling inotify_add_watch().
      
      Add inotify_find_watch() to find an existing watch for an (ih,inode)
      pair.  This is similar to inotify_find_update_watch(), but does not
      update the watch's mask if one is found.
      
      Add inotify_rm_watch() to remove a watch via the watch pointer instead
      of the watch descriptor.
      Signed-off-by: NAmy Griffis <amy.griffis@hp.com>
      Acked-by: NRobert Love <rml@novell.com>
      Acked-by: NJohn McCutchan <john@johnmccutchan.com>
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      a9dc971d
    • A
      [PATCH] inotify (2/5): add name's inode to event handler · 7c297722
      Amy Griffis 提交于
      When an inotify event includes a dentry name, also include the inode
      associated with that name.
      Signed-off-by: NAmy Griffis <amy.griffis@hp.com>
      Acked-by: NRobert Love <rml@novell.com>
      Acked-by: NJohn McCutchan <john@johnmccutchan.com>
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      7c297722
    • A
      [PATCH] inotify (1/5): split kernel API from userspace support · 2d9048e2
      Amy Griffis 提交于
      The following series of patches introduces a kernel API for inotify,
      making it possible for kernel modules to benefit from inotify's
      mechanism for watching inodes.  With these patches, inotify will
      maintain for each caller a list of watches (via an embedded struct
      inotify_watch), where each inotify_watch is associated with a
      corresponding struct inode.  The caller registers an event handler and
      specifies for which filesystem events their event handler should be
      called per inotify_watch.
      Signed-off-by: NAmy Griffis <amy.griffis@hp.com>
      Acked-by: NRobert Love <rml@novell.com>
      Acked-by: NJohn McCutchan <john@johnmccutchan.com>
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      2d9048e2
    • A
      [PATCH] remove config.h from inotify.h · 90204e0b
      Al Viro 提交于
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      90204e0b
    • D
      [SPARC64]: Move over to GENERIC_HARDIRQS. · e18e2a00
      David S. Miller 提交于
      This is the long overdue conversion of sparc64 over to
      the generic IRQ layer.
      
      The kernel image is slightly larger, but the BSS is ~60K
      smaller due to the reduced size of struct ino_bucket.
      
      A lot of IRQ implementation details, including ino_bucket,
      were moved out of asm-sparc64/irq.h and are now private to
      arch/sparc64/kernel/irq.c, and most of the code in irq.c
      totally disappeared.
      
      One thing that's different at the moment is IRQ distribution,
      we do it at enable_irq() time.  If the cpu mask is ALL then
      we round-robin using a global rotating cpu counter, else
      we pick the first cpu in the mask to support single cpu
      targetting.  This is similar to what powerpc's XICS IRQ
      support code does.
      
      This works fine on my UP SB1000, and the SMP build goes
      fine and runs on that machine, but lots of testing on
      different setups is needed.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e18e2a00
    • D
      [SPARC64]: Virtualize IRQ numbers. · 8047e247
      David S. Miller 提交于
      Inspired by PowerPC XICS interrupt support code.
      
      All IRQs are virtualized in order to keep NR_IRQS from needing
      to be too large.  Interrupts on sparc64 are arbitrary 11-bit
      values, but we don't need to define NR_IRQS to 2048 if we
      virtualize the IRQs.
      
      As PCI and SBUS controller drivers build device IRQs, we divy
      out virtual IRQ numbers incrementally starting at 1.  Zero is
      a special virtual IRQ used for the timer interrupt.
      
      So device drivers all see virtual IRQs, and all the normal
      interfaces such as request_irq(), enable_irq(), etc. translate
      that into a real IRQ number in order to configure the IRQ.
      
      At this point knowledge of the struct ino_bucket is almost
      entirely contained within arch/sparc64/kernel/irq.c  There are
      a few small bits in the PCI controller drivers that need to
      be swept away before we can remove ino_bucket's definition
      out of asm-sparc64/irq.h and privately into kernel/irq.c
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8047e247
    • D
      [SPARC64]: Kill ino_bucket->pil · 37cdcd9e
      David S. Miller 提交于
      And reuse that struct member for virt_irq, which will
      be used in future changesets for the implementation of
      mapping between real and virtual IRQ numbers.
      
      This nicely kills off a ton of SBUS and PCI controller
      PIL assignment code which is no longer necessary.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      37cdcd9e