1. 12 5月, 2011 2 次提交
    • X
      scripts/kallsyms.c: fix potential segfault · e0a04b11
      Xiaochen Wang 提交于
      Description:
      This bug hardly appears during real kernel compiling,
       because the vmlinux symbols table is huge.
      
      But we can still catch it under strict condition , as follows.
         $ echo "c101b97b T do_fork" | ./scripts/kallsyms --all-symbols
         #include <asm/types.h>
         ......
         ......
         .globl kallsyms_token_table
                 ALGN
         kallsyms_token_table:
         Segmentation fault (core dumped)
         $
      
      If symbols table is small, all entries in token_profit[0x10000] may
      decrease to 0 after several calls of compress_symbols() in optimize_result().
      In that case, find_best_token() always return 0 and
      best_table[i] is set to "\0\0" and best_table_len[i] is set to 2.
      
      As a result, expand_symbol(best_table[0]="\0\0", best_table_len[0]=2, buf)
      in write_src() will run in infinite recursion until stack overflows,
      causing segfault.
      
      This patch checks the find_best_token() return value. If all entries in
      token_profit[0x10000] become 0 according to return value, it breaks the loop
      in optimize_result().
      And expand_symbol() works well when best_table_len[i] is 0.
      Signed-off-by: NXiaochen Wang <wangxiaochen0@gmail.com>
      Acked-by: NPaulo Marques <pmarques@grupopie.com>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      e0a04b11
    • J
      scripts/gen_initramfs_list.sh: Convert to a /bin/sh script · 153f0114
      Jamey Sharp 提交于
      Replace bashisms with POSIX-compatible shell scripting.
      
      Notably, de-duplicate '/' using a sed command from elsewhere in the same script
      rather than "${name//\/\///}".
      
      Commit by Jamey Sharp and Josh Triplett.
      Signed-off-by: NJamey Sharp <jamey@minilop.net>
      Signed-off-by: NJosh Triplett <josh@joshtriplett.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      153f0114
  2. 11 5月, 2011 1 次提交
    • K
      kbuild: Fix GNU make v3.80 compatibility · 43f67c98
      Kevin Cernekee 提交于
      According to Documentation/Changes, the kernel should be buildable with
      GNU make 3.80+.  Commit 88d7be03 (kbuild:
      Use a single clean rule for kernel and external modules) introduced the
      "$(or" construct, which requires make 3.81.  This causes "make clean" to
      malfunction when it is used with external modules.
      
      Replace "$(or" with an equivalent "$(if" expression, to restore backward
      compatibility.
      Signed-off-by: NKevin Cernekee <cernekee@gmail.com>
      Cc: stable@kernel.org
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      43f67c98
  3. 03 5月, 2011 3 次提交
  4. 02 5月, 2011 1 次提交
  5. 29 4月, 2011 3 次提交
  6. 28 4月, 2011 1 次提交
    • S
      kbuild: implement several W= levels · 28bc20dc
      Sam Ravnborg 提交于
      Building a kernel with "make W=1" produces far too much noise to be
      useful.
      
      Divide the warning options in three groups:
      
          W=1 - warnings that may be relevant and does not occur too often
          W=2 - warnings that occur quite often but may still be relevant
          W=3 - the more obscure warnings, can most likely be ignored
      
      When building the whole kernel, those levels produce:
      
      W=1 - 4859 warnings
      W=2 - 1394 warnings
      W=3 - 86666 warnings
      
      respectively. Warnings have been counted with Geert's script at
      
      http://www.kernel.org/pub/linux/kernel/people/geert/linux-log/linux-log-summary.pl
      
      Many warnings occur from .h files so fixing one file may have a nice
      effect on the total number of warnings.
      
      With these changes I am actually tempted to try W=1 now and then.
      Previously there was just too much noise.
      
      Borislav:
      
      - make the W= levels exclusive
      - move very noisy and making little sense for the kernel warnings to W=3
      - drop -Woverlength-strings due to useless warning message
      - copy explanatory text for the different warning levels to 'make help'
      - recount warnings per level
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Signed-off-by: NBorislav Petkov <bp@alien8.de>
      Cc: Dave Jones <davej@redhat.com>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      28bc20dc
  7. 20 4月, 2011 1 次提交
  8. 18 4月, 2011 5 次提交
  9. 15 4月, 2011 2 次提交
    • A
      kbuild: move KALLSYMS_EXTRA_PASS from Kconfig to Makefile · 1e2795a1
      Artem Bityutskiy 提交于
      At the moment we have the CONFIG_KALLSYMS_EXTRA_PASS Kconfig switch,
      which users can enable or disable while configuring the kernel. This
      option is then used by 'make' to determine whether an extra kallsyms
      pass is needed or not.
      
      However, this approach is not nice and confusing, and this patch moves
      CONFIG_KALLSYMS_EXTRA_PASS from Kconfig to Makefile instead. The
      rationale is below.
      
      1. CONFIG_KALLSYMS_EXTRA_PASS is really about the build time, not
         run-time. There is no real need for it to be in Kconfig. It is
         just an additional work-around which should be used only in rare
         cases, when someone breaks kallsyms, so Kbuild/Makefile is much
         better place for this option.
      2. Grepping CONFIG_KALLSYMS_EXTRA_PASS shows that many defconfigs have
         it enabled, probably not because they try to work-around a kallsyms
         bug, but just because the Kconfig help text is confusing and does
         not really make it clear that this option should not be used unless
         except when kallsyms is broken.
      3. And since many people have CONFIG_KALLSYMS_EXTRA_PASS enabled in
         their Kconfig, we do might fail to notice kallsyms bugs in time. E.g.,
         many testers use "make allyesconfig" to test builds, which will enable
         CONFIG_KALLSYMS_EXTRA_PASS and kallsyms breakage will not be noticed.
      
      To address that, this patch:
      
      1. Kills CONFIG_KALLSYMS_EXTRA_PASS
      2. Changes Makefile so that people can use "make KALLSYMS_EXTRA_PASS=1"
         to enable the extra pass if needed. Additionally, they may define
         KALLSYMS_EXTRA_PASS as an environment variable.
      3. By default KALLSYMS_EXTRA_PASS is disabled and if kallsyms has issues,
         "make" should print a warning and suggest using KALLSYMS_EXTRA_PASS
      Signed-off-by: NArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
      [mmarek: Removed make help text, is not necessary]
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      1e2795a1
    • A
      Kconfig: improve KALLSYMS_ALL documentation · 71a83ec7
      Artem Bityutskiy 提交于
      Dumb users like myself are not able to grasp from the existing KALLSYMS_ALL
      documentation that this option is not what they need. Improve the help
      message and make it clearer that KALLSYMS is enough in the majority of
      use cases, and KALLSYMS_ALL should really be used very rarely.
      Signed-off-by: NArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      71a83ec7
  10. 30 3月, 2011 9 次提交
  11. 29 3月, 2011 12 次提交