On Mon, 5 Jun 2006 13:27:11 -0700 (PDT)
Christoph Lameter <[email protected]> wrote:
>
> > Either way, random panics are not the appropriate response ;-)
> >
> > if it can't cope with that, why isn't it failing the request ???
>
> There is a crappy test in swap_on(). It should check against MAX_SWAPFILES
> and not do this conversion back and forth. Some architectures may not
> check if we are beyond the boundaries of what a swap entry can take.
>
> Why is this strange this in there? Are there architectures that support
> less than 32 swap devices?
>
> Signed-off-by: Christoph Lameter <[email protected]>
>
> Index: linux-2.6.17-rc5-mm2/mm/swapfile.c
> ===================================================================
> --- linux-2.6.17-rc5-mm2.orig/mm/swapfile.c 2006-06-01 10:03:07.127259731 -0700
> +++ linux-2.6.17-rc5-mm2/mm/swapfile.c 2006-06-05 13:24:56.000823157 -0700
> @@ -1384,6 +1384,9 @@ asmlinkage long sys_swapon(const char __
> struct inode *inode = NULL;
> int did_down = 0;
>
> + if (nr_swapfiles >= MAX_SWAPFILES)
> + return -E2BIG;
> +
> if (!capable(CAP_SYS_ADMIN))
> return -EPERM;
> spin_lock(&swap_lock);
> @@ -1392,22 +1395,6 @@ asmlinkage long sys_swapon(const char __
> if (!(p->flags & SWP_USED))
> break;
> error = -EPERM;
> - /*
> - * Test if adding another swap device is possible. There are
> - * two limiting factors: 1) the number of bits for the swap
> - * type swp_entry_t definition and 2) the number of bits for
> - * the swap type in the swap ptes as defined by the different
> - * architectures. To honor both limitations a swap entry
> - * with swap offset 0 and swap type ~0UL is created, encoded
> - * to a swap pte, decoded to a swp_entry_t again and finally
> - * the swap type part is extracted. This will mask all bits
> - * from the initial ~0UL that can't be encoded in either the
> - * swp_entry_t or the architecture definition of a swap pte.
> - */
> - if (type > swp_type(pte_to_swp_entry(swp_entry_to_pte(swp_entry(~0UL,0))))) {
> - spin_unlock(&swap_lock);
> - goto out;
> - }
> if (type >= nr_swapfiles)
> nr_swapfiles = type+1;
> INIT_LIST_HEAD(&p->extent_list);
Added [email protected] to cc.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]