lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200213194135.GF6870@magnolia>
Date:   Thu, 13 Feb 2020 11:41:35 -0800
From:   "Darrick J. Wong" <darrick.wong@...cle.com>
To:     Christoph Hellwig <hch@....de>,
        Linus Torvalds <torvalds@...ux-foundation.org>,
        Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: Regression: hibernation is broken since
 e6bc9de714972cac34daa1dc1567ee48a47a9342

On Thu, Feb 13, 2020 at 11:34:10AM -0800, Darrick J. Wong wrote:
> On Thu, Feb 13, 2020 at 07:35:15PM +0100, Domenico Andreoli wrote:
> > On Thu, Feb 13, 2020 at 09:57:53AM -0800, Darrick J. Wong wrote:
> > > On Thu, Feb 13, 2020 at 06:23:51PM +0100, Domenico Andreoli wrote:
> > > > Hi,
> > > > 
> > > >   at some point between 5.2 and 5.3 my laptop started to refuse
> > > > hibernating and come back to a full functional state. It's fully 100%
> > > > reproducible, no oopses or any other damage to the state seems to happen.
> > > > 
> > > > It took me a while to follow the trail down to this commit. If I revert
> > > > it from v5.6-rc1, the hibernation is back as in the old times.
> > > 
> > > Hmm, do you know which hibernation mechanism your computer is using?
> > > 
> > > --D
> > 
> > s2disk/uswsusp. Any other tool I could use as alternative?
> 
> Well ... you could try the in-kernel hibernate (which I think is what
> 'systemctl hibernate' does), though you'd lose the nifty features of
> µswsusp.
> 
> In the end, though, I'll probably have to revert all those IS_SWAPFILE
> checks (at least if CONFIG_HIBERNATION=y) since it's not fair to force
> you to totally reconfigure your hibernation setup.

Also, does the following partial revert fix uswsusp for you?  It'll
allow the direct writes that uswsusp wants to do, while leaving the rest
(mmap writes) in place.

--D

diff --git a/fs/block_dev.c b/fs/block_dev.c
index 69bf2fb6f7cd..077d9fa6b87d 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -2001,8 +2001,10 @@ ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from)
 	if (bdev_read_only(I_BDEV(bd_inode)))
 		return -EPERM;
 
+#ifndef CONFIG_HIBERNATION
 	if (IS_SWAPFILE(bd_inode))
 		return -ETXTBSY;
+#endif
 
 	if (!iov_iter_count(from))
 		return 0;
diff --git a/mm/filemap.c b/mm/filemap.c
index 1784478270e1..3df3211abe25 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -2920,8 +2920,10 @@ inline ssize_t generic_write_checks(struct kiocb *iocb, struct iov_iter *from)
 	loff_t count;
 	int ret;
 
+#ifndef CONFIG_HIBERNATION
 	if (IS_SWAPFILE(inode))
 		return -ETXTBSY;
+#endif
 
 	if (!iov_iter_count(from))
 		return 0;

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ