Re: [PATCH v2] hibernate: Allow uswsusp to write to swap

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

 



On Sun, Mar 22, 2020 at 12:23:14PM +0100, Domenico Andreoli wrote:
> On Sun, Mar 22, 2020 at 08:14:21AM +0100, Rafael J. Wysocki wrote:
> > On Wednesday, March 4, 2020 6:06:46 PM CET Domenico Andreoli wrote:
> > > From: Domenico Andreoli <domenico.andreoli@xxxxxxxxx>
> > > 
> > > It turns out that there is one use case for programs being able to
> > > write to swap devices, and that is the userspace hibernation code.
> > > 
> > > Quick fix: disable the S_SWAPFILE check if hibernation is configured.
> > > 
> > > Fixes: dc617f29dbe5 ("vfs: don't allow writes to swap files")
> > > Reported-by: Domenico Andreoli <domenico.andreoli@xxxxxxxxx>
> > > Reported-by: Marian Klein <mkleinsoft@xxxxxxxxx>
> > > Signed-off-by: Domenico Andreoli <domenico.andreoli@xxxxxxxxx>
> > > 
> > > v2:
> > >  - use hibernation_available() instead of IS_ENABLED(CONFIG_HIBERNATE)
> > >  - make Fixes: point to the right commit
> > 
> > This looks OK to me.
> > 
> > Has it been taken care of already, or am I expected to apply it?
> 
> I don't know who is supposed to take it, I did not receive any notification.

Hmmm.  I thought it had been picked up by akpm (see "[alternative-merged]
vfs-partially-revert-dont-allow-writes-to-swap-files.patch removed from
-mm tree" from 5 March), but it's not in mmotm now, so I'll put this in my
vfs tree for 5.7.

Also, since apparently my previous RVB apparently never made it to the
internet,

Reviewed-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx>

--D

> > 
> > > ---
> > >  fs/block_dev.c |    4 +++-
> > >  1 file changed, 3 insertions(+), 1 deletion(-)
> > > 
> > > Index: b/fs/block_dev.c
> > > ===================================================================
> > > --- a/fs/block_dev.c
> > > +++ b/fs/block_dev.c
> > > @@ -34,6 +34,7 @@
> > >  #include <linux/task_io_accounting_ops.h>
> > >  #include <linux/falloc.h>
> > >  #include <linux/uaccess.h>
> > > +#include <linux/suspend.h>
> > >  #include "internal.h"
> > >  
> > >  struct bdev_inode {
> > > @@ -2001,7 +2002,8 @@ ssize_t blkdev_write_iter(struct kiocb *
> > >  	if (bdev_read_only(I_BDEV(bd_inode)))
> > >  		return -EPERM;
> > >  
> > > -	if (IS_SWAPFILE(bd_inode))
> > > +	/* uswsusp needs write permission to the swap */
> > > +	if (IS_SWAPFILE(bd_inode) && !hibernation_available())
> > >  		return -ETXTBSY;
> > >  
> > >  	if (!iov_iter_count(from))
> > > 
> > 
> > 
> > 
> > 
> 
> -- 
> rsa4096: 3B10 0CA1 8674 ACBA B4FE  FCD2 CE5B CF17 9960 DE13
> ed25519: FFB4 0CC3 7F2E 091D F7DA  356E CC79 2832 ED38 CB05




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

  Powered by Linux