1. 02 10月, 2006 9 次提交
    • E
      [PATCH] proc: give the root directory a task · f6c7a1f3
      Eric W. Biederman 提交于
      Helper functions in base.c like proc_pident_readdir and proc_pident_lookup
      assume the directories have an associated task, and cannot currently be used
      on the /proc root directory because it does not have such a task.
      
      This small changes allows for base.c to be simplified and later when multiple
      pid spaces are introduced it makes getting the needed context information
      trivial.
      Signed-off-by: NEric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      f6c7a1f3
    • E
      [PATCH] proc: modify proc_pident_lookup to be completely table driven · 20cdc894
      Eric W. Biederman 提交于
      Currently proc_pident_lookup gets the names and types from a table and then
      has a huge switch statement to get the inode and file operations it needs.
      That is silly and is becoming increasingly hard to maintain so I just put all
      of the information in the table.
      Signed-off-by: NEric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      20cdc894
    • E
      [PATCH] proc: reorder the functions in base.c · 28a6d671
      Eric W. Biederman 提交于
      There were enough changes in my last round of cleaning up proc I had to break
      up the patch series into smaller chunks, and my last chunk never got resent.
      
      This patchset gives proc dynamic inode numbers (the static inode numbers were
      a pain to maintain and prevent all kinds of things), and removes the horrible
      switch statements that had to be kept in sync with everything else.  Being
      fully table driver takes us 90% of the way of being able to register new
      process specific attributes in proc.
      
      This patch:
      
      Group the functions by what they implement instead of by type of operation.
      As it existed base.c was quickly approaching the point where it could not be
      followed.
      
      No functionality or code changes asside from adding/removing forward
      declartions are implemented in this patch.
      Signed-off-by: NEric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      28a6d671
    • E
      [PATCH] proc: readdir race fix (take 3) · 0804ef4b
      Eric W. Biederman 提交于
      The problem: An opendir, readdir, closedir sequence can fail to report
      process ids that are continually in use throughout the sequence of system
      calls.  For this race to trigger the process that proc_pid_readdir stops at
      must exit before readdir is called again.
      
      This can cause ps to fail to report processes, and it is in violation of
      posix guarantees and normal application expectations with respect to
      readdir.
      
      Currently there is no way to work around this problem in user space short
      of providing a gargantuan buffer to user space so the directory read all
      happens in on system call.
      
      This patch implements the normal directory semantics for proc, that
      guarantee that a directory entry that is neither created nor destroyed
      while reading the directory entry will be returned.  For directory that are
      either created or destroyed during the readdir you may or may not see them.
       Furthermore you may seek to a directory offset you have previously seen.
      
      These are the guarantee that ext[23] provides and that posix requires, and
      more importantly that user space expects.  Plus it is a simple semantic to
      implement reliable service.  It is just a matter of calling readdir a
      second time if you are wondering if something new has show up.
      
      These better semantics are implemented by scanning through the pids in
      numerical order and by making the file offset a pid plus a fixed offset.
      
      The pid scan happens on the pid bitmap, which when you look at it is
      remarkably efficient for a brute force algorithm.  Given that a typical
      cache line is 64 bytes and thus covers space for 64*8 == 200 pids.  There
      are only 40 cache lines for the entire 32K pid space.  A typical system
      will have 100 pids or more so this is actually fewer cache lines we have to
      look at to scan a linked list, and the worst case of having to scan the
      entire pid bitmap is pretty reasonable.
      
      If we need something more efficient we can go to a more efficient data
      structure for indexing the pids, but for now what we have should be
      sufficient.
      
      In addition this takes no additional locks and is actually less code than
      what we are doing now.
      
      Also another very subtle bug in this area has been fixed.  It is possible
      to catch a task in the middle of de_thread where a thread is assuming the
      thread of it's thread group leader.  This patch carefully handles that case
      so if we hit it we don't fail to return the pid, that is undergoing the
      de_thread dance.
      
      Thanks to KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> for
      providing the first fix, pointing this out and working on it.
      
      [oleg@tv-sign.ru: fix it]
      Signed-off-by: NEric W. Biederman <ebiederm@xmission.com>
      Acked-by: NKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Signed-off-by: NOleg Nesterov <oleg@tv-sign.ru>
      Cc: Jean Delvare <jdelvare@suse.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      0804ef4b
    • R
      [PATCH] list module taint flags in Oops/panic · 2bc2d61a
      Randy Dunlap 提交于
      When listing loaded modules during an oops or panic, also list each
      module's Tainted flags if non-zero (P: Proprietary or F: Forced load only).
      
      If a module is did not taint the kernel, it is just listed like
      	usbcore
      but if it did taint the kernel, it is listed like
      	wizmodem(PF)
      
      Example:
      [ 3260.121718] Unable to handle kernel NULL pointer dereference at 0000000000000000 RIP:
      [ 3260.121729]  [<ffffffff8804c099>] :dump_test:proc_dump_test+0x99/0xc8
      [ 3260.121742] PGD fe8d067 PUD 264a6067 PMD 0
      [ 3260.121748] Oops: 0002 [1] SMP
      [ 3260.121753] CPU 1
      [ 3260.121756] Modules linked in: dump_test(P) snd_pcm_oss snd_mixer_oss snd_seq snd_seq_device ide_cd generic ohci1394 snd_hda_intel snd_hda_codec snd_pcm snd_timer snd ieee1394 snd_page_alloc piix ide_core arcmsr aic79xx scsi_transport_spi usblp
      [ 3260.121785] Pid: 5556, comm: bash Tainted: P      2.6.18-git10 #1
      
      [Alternatively, I can look into listing tainted flags with 'lsmod',
      but that won't help in oopsen/panics so much.]
      
      [akpm@osdl.org: cleanup]
      Signed-off-by: NRandy Dunlap <rdunlap@xenotime.net>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      2bc2d61a
    • D
      [PATCH] make genpool allocator adhere to kernel-doc standards · a58cbd7c
      Dean Nelson 提交于
      The exported kernel interfaces of genpool allocator need to adhere to
      the requirements of kernel-doc.
      Signed-off-by: NDean Nelson <dcn@sgi.com>
      Cc: Steve Wise <swise@opengridcomputing.com>
      Acked-by: NRandy Dunlap <rdunlap@xenotime.net>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      a58cbd7c
    • S
      [PATCH] LIB: add gen_pool_destroy() · 322acc96
      Steve Wise 提交于
      Modules using the genpool allocator need to be able to destroy the data
      structure when unloading.
      Signed-off-by: NSteve Wise <swise@opengridcomputing.com>
      Cc: Randy Dunlap <rdunlap@xenotime.net>
      Cc: Dean Nelson <dcn@sgi.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      322acc96
    • L
      pccard_store_cis: fix wrong error handling · d834c165
      Linus Torvalds 提交于
      The test for the error from pcmcia_replace_cis() was incorrect, and
      would always trigger (because if an error didn't happen, the "ret" value
      would not be zero, it would be the passed-in count).
      
      Reported and debugged by Fabrice Bellet <fabrice@bellet.info>
      
      Rather than just fix the single broken test, make the code in question
      use an understandable code-sequence instead, fixing the whole function
      to be more readable.
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      d834c165
    • A
      [PATCH] rtc-sysfs fix · 4e9011d5
      Andrew Morton 提交于
      It's not clear how this thinko got through..
      
      Cc: Olaf Hering <olaf@aepfle.de>
      Cc: David Brownell <david-b@pacbell.net>
      Cc: Alessandro Zummo <alessandro.zummo@towertech.it>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      4e9011d5
  2. 01 10月, 2006 31 次提交