Message ID | 20200727161319.GH794331@ZenIV.linux.org.uk |
---|---|
State | RFC |
Delegated to: | David Miller |
Headers | show |
Series | Re: PROBLEM: cryptsetup fails to unlock drive in 5.8-rc6 (regression) | expand |
On 2020-07-27, Al Viro <viro@zeniv.linux.org.uk> wrote: > On Mon, Jul 27, 2020 at 05:05:54PM +0100, Al Viro wrote: >> On Thu, Jul 23, 2020 at 11:51:01AM -0400, Nick Bowler wrote: >> > After installing Linux 5.8-rc6, it seems cryptsetup can no longer >> > open LUKS volumes. Regardless of the entered passphrase (correct >> > or otherwise), the result is a very unhelpful "Keyslot open failed." >> > message. [...] > Oh, fuck... Please see if the following fixes your reproducer; the braino > is, of course, that instead of fetching ucmsg->cmsg_len into ucmlen we read > the entire thing into cmsg. Other uses of ucmlen had been replaced with > cmsg.cmsg_len; this one was missed. > > Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> > --- > diff --git a/net/compat.c b/net/compat.c > index 5e3041a2c37d..434838bef5f8 100644 > --- a/net/compat.c > +++ b/net/compat.c > @@ -202,7 +202,7 @@ int cmsghdr_from_user_compat_to_kern(struct msghdr > *kmsg, struct sock *sk, > > /* Advance. */ > kcmsg = (struct cmsghdr *)((char *)kcmsg + tmp); > - ucmsg = cmsg_compat_nxthdr(kmsg, ucmsg, ucmlen); > + ucmsg = cmsg_compat_nxthdr(kmsg, ucmsg, cmsg.cmsg_len); > } > > /* This patch appears to resolve the problem when applied on top of 5.8-rc7. Thanks, Nick
diff --git a/net/compat.c b/net/compat.c index 5e3041a2c37d..434838bef5f8 100644 --- a/net/compat.c +++ b/net/compat.c @@ -202,7 +202,7 @@ int cmsghdr_from_user_compat_to_kern(struct msghdr *kmsg, struct sock *sk, /* Advance. */ kcmsg = (struct cmsghdr *)((char *)kcmsg + tmp); - ucmsg = cmsg_compat_nxthdr(kmsg, ucmsg, ucmlen); + ucmsg = cmsg_compat_nxthdr(kmsg, ucmsg, cmsg.cmsg_len); } /*