Re: [PATCH] swapfile : fix the wrong return value

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 4 Mar 2010, Huang Shijie wrote:
> > 
> > swap_duplicate()'s loop appears to miss out on returning the error code
> > from __swap_duplicate(), except when that's -ENOMEM.  In fact this is
> > intentional: prior to -ENOMEM for swap_count_continuation, swap_duplicate()
> > was void (and the case only occurs when copy_one_pte() hits a corrupt pte).
> >    
> only?
> 
> There are several paths calling the try_to_unmap(), Could you sure that
> the swap entries are valid in all the paths ?

Yes.  Well, we are debating the likelihoods of corruption in different memory
areas here.  I answer "Yes" because the swap entry involved in try_to_unmap_one()
comes from page->private when PageSwapCache is set (and the page is locked):
it requires either an mm bug, or corruption of struct page, for that swap entry
to be invalid for duplication.  Memory corruption of entries in a user page
table seems to have been a more common case, whether because of single-bit memory
errors, or use-after-free bugs: that's the case which copy_one_pte() might meet.
 
> 
> For the sake of the stability of the system, I perfer to export all the error
> value, and check it carefully.

But we were happy with void swap_duplicate() for many years.
If I wanted to make a further change, it would rather be to remove those
error returns from __swap_duplicate() which are not actually made use of.

Hugh

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxxx  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]