1. 17 1月, 2015 1 次提交
  2. 19 6月, 2013 1 次提交
  3. 18 5月, 2013 1 次提交
    • Y
      x86, range: fix missing merge during add range · fbe06b7b
      Yinghai Lu 提交于
      Christian found v3.9 does not work with E350 with EFI is enabled.
      
      [    1.658832] Trying to unpack rootfs image as initramfs...
      [    1.679935] BUG: unable to handle kernel paging request at ffff88006e3fd000
      [    1.686940] IP: [<ffffffff813661df>] memset+0x1f/0xb0
      [    1.692010] PGD 1f77067 PUD 1f7a067 PMD 61420067 PTE 0
      
      but early memtest report all memory could be accessed without problem.
      
      early page table is set in following sequence:
      [    0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
      [    0.000000] init_memory_mapping: [mem 0x6e600000-0x6e7fffff]
      [    0.000000] init_memory_mapping: [mem 0x6c000000-0x6e5fffff]
      [    0.000000] init_memory_mapping: [mem 0x00100000-0x6bffffff]
      [    0.000000] init_memory_mapping: [mem 0x6e800000-0x6ea07fff]
      but later efi_enter_virtual_mode try set mapping again wrongly.
      [    0.010644] pid_max: default: 32768 minimum: 301
      [    0.015302] init_memory_mapping: [mem 0x640c5000-0x6e3fcfff]
      that means it fails with pfn_range_is_mapped.
      
      It turns out that we have a bug in add_range_with_merge and it does not
      merge range properly when new add one fill the hole between two exsiting
      ranges. In the case when [mem 0x00100000-0x6bffffff] is the hole between
      [mem 0x00000000-0x000fffff] and [mem 0x6c000000-0x6e7fffff].
      
      Fix the add_range_with_merge by calling itself recursively.
      Reported-by: N"Christian König" <christian.koenig@amd.com>
      Signed-off-by: NYinghai Lu <yinghai@kernel.org>
      Link: http://lkml.kernel.org/r/CAE9FiQVofGoSk7q5-0irjkBxemqK729cND4hov-1QCBJDhxpgQ@mail.gmail.com
      Cc: <stable@vger.kernel.org> v3.9
      Signed-off-by: NH. Peter Anvin <hpa@linux.intel.com>
      fbe06b7b
  4. 01 5月, 2013 1 次提交
  5. 31 10月, 2011 1 次提交
  6. 12 11月, 2010 1 次提交
    • A
      kernel/range.c: fix clean_sort_range() for the case of full array · 834b4038
      Alexey Khoroshilov 提交于
      clean_sort_range() should return a number of nonempty elements of range
      array, but if the array is full clean_sort_range() returns 0.
      
      The problem is that the number of nonempty elements is evaluated by
      finding the first empty element of the array.  If there is no such element
      it returns an initial value of local variable nr_range that is zero.
      
      The fix is trivial: it changes initial value of nr_range to size of the
      array.
      
      The bug can lead to loss of information regarding all ranges, since
      typically returned value of clean_sort_range() is considered as an actual
      number of ranges in the array after a series of add/subtract operations.
      
      Found by Analytical Verification project of Linux Verification Center
      (linuxtesting.org), thanks to Alexander Kolosov.
      Signed-off-by: NAlexey Khoroshilov <khoroshilov@ispras.ru>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      834b4038
  7. 10 8月, 2010 1 次提交
  8. 11 2月, 2010 2 次提交