* [PATCH v2] hibernate: Allow uswsusp to write to swap
@ 2020-03-04 17:06 Domenico Andreoli
2020-03-22 7:14 ` Rafael J. Wysocki
0 siblings, 1 reply; 5+ messages in thread
From: Domenico Andreoli @ 2020-03-04 17:06 UTC (permalink / raw)
To: Darrick J. Wong
Cc: Rafael J. Wysocki, Linux PM, Linux Memory Management List,
linux-fsdevel, mkleinsoft, Christoph Hellwig, Andrew Morton,
Rafael J. Wysocki, Len Brown, Pavel Machek
From: Domenico Andreoli <domenico.andreoli@linux.com>
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@linux.com>
Reported-by: Marian Klein <mkleinsoft@gmail.com>
Signed-off-by: Domenico Andreoli <domenico.andreoli@linux.com>
v2:
- use hibernation_available() instead of IS_ENABLED(CONFIG_HIBERNATE)
- make Fixes: point to the right commit
---
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))
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] hibernate: Allow uswsusp to write to swap
2020-03-04 17:06 [PATCH v2] hibernate: Allow uswsusp to write to swap Domenico Andreoli
@ 2020-03-22 7:14 ` Rafael J. Wysocki
2020-03-22 11:23 ` Domenico Andreoli
0 siblings, 1 reply; 5+ messages in thread
From: Rafael J. Wysocki @ 2020-03-22 7:14 UTC (permalink / raw)
To: Domenico Andreoli
Cc: Darrick J. Wong, Rafael J. Wysocki, Linux PM,
Linux Memory Management List, linux-fsdevel, mkleinsoft,
Christoph Hellwig, Andrew Morton, Len Brown, Pavel Machek
On Wednesday, March 4, 2020 6:06:46 PM CET Domenico Andreoli wrote:
> From: Domenico Andreoli <domenico.andreoli@linux.com>
>
> 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@linux.com>
> Reported-by: Marian Klein <mkleinsoft@gmail.com>
> Signed-off-by: Domenico Andreoli <domenico.andreoli@linux.com>
>
> 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?
> ---
> 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))
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] hibernate: Allow uswsusp to write to swap
2020-03-22 7:14 ` Rafael J. Wysocki
@ 2020-03-22 11:23 ` Domenico Andreoli
2020-03-23 15:21 ` Darrick J. Wong
0 siblings, 1 reply; 5+ messages in thread
From: Domenico Andreoli @ 2020-03-22 11:23 UTC (permalink / raw)
To: Rafael J. Wysocki
Cc: Darrick J. Wong, Rafael J. Wysocki, Linux PM,
Linux Memory Management List, linux-fsdevel, mkleinsoft,
Christoph Hellwig, Andrew Morton, Len Brown, Pavel Machek
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@linux.com>
> >
> > 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@linux.com>
> > Reported-by: Marian Klein <mkleinsoft@gmail.com>
> > Signed-off-by: Domenico Andreoli <domenico.andreoli@linux.com>
> >
> > 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.
>
> > ---
> > 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
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] hibernate: Allow uswsusp to write to swap
2020-03-22 11:23 ` Domenico Andreoli
@ 2020-03-23 15:21 ` Darrick J. Wong
2020-03-24 2:19 ` Andrew Morton
0 siblings, 1 reply; 5+ messages in thread
From: Darrick J. Wong @ 2020-03-23 15:21 UTC (permalink / raw)
To: Domenico Andreoli
Cc: Rafael J. Wysocki, Rafael J. Wysocki, Linux PM,
Linux Memory Management List, linux-fsdevel, mkleinsoft,
Christoph Hellwig, Andrew Morton, Len Brown, Pavel Machek
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@linux.com>
> > >
> > > 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@linux.com>
> > > Reported-by: Marian Klein <mkleinsoft@gmail.com>
> > > Signed-off-by: Domenico Andreoli <domenico.andreoli@linux.com>
> > >
> > > 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@oracle.com>
--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
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] hibernate: Allow uswsusp to write to swap
2020-03-23 15:21 ` Darrick J. Wong
@ 2020-03-24 2:19 ` Andrew Morton
0 siblings, 0 replies; 5+ messages in thread
From: Andrew Morton @ 2020-03-24 2:19 UTC (permalink / raw)
To: Darrick J. Wong
Cc: Domenico Andreoli, Rafael J. Wysocki, Rafael J. Wysocki,
Linux PM, Linux Memory Management List, linux-fsdevel,
mkleinsoft, Christoph Hellwig, Len Brown, Pavel Machek
On Mon, 23 Mar 2020 08:21:05 -0700 "Darrick J. Wong" <darrick.wong@oracle.com> wrote:
> > > 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,
oop. Things which are advertised as "hibernate: ..." tend not to
survive my morning email triage :(
> so I'll put this in my
> vfs tree for 5.7.
Thanks. But I assume that "it turns out that userspace hibernation
requires the ability to write the hibernation image to a swap device"
means we've regressed userspace hibernation.
So I'd say either "5.6 with a cc:stable" or "5.7-rc1 with a cc:stable"
if we're being more cautious.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-03-24 2:19 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-04 17:06 [PATCH v2] hibernate: Allow uswsusp to write to swap Domenico Andreoli
2020-03-22 7:14 ` Rafael J. Wysocki
2020-03-22 11:23 ` Domenico Andreoli
2020-03-23 15:21 ` Darrick J. Wong
2020-03-24 2:19 ` Andrew Morton
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).