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

Re: Bug#1057441: linux-image-6.6-amd64: Crypt does not longer work



Control: reassign -1 src:cryptsetup 2:2.6.1-5

Hi

On Tue, Dec 05, 2023 at 04:55:58PM +0100, Salvatore Bonaccorso wrote:
> Hi,
> 
> On Tue, Dec 05, 2023 at 04:38:19PM +0100, Salvatore Bonaccorso wrote:
> > Control: tags -1 + confirmed
> > 
> > On Tue, Dec 05, 2023 at 06:23:45AM +0100, Michael Ott wrote:
> > > Package: src:linux
> > > Version: 6.6.4-1~exp1
> > > Severity: important
> > > 
> > > Dear Maintainer,
> > > 
> > > After updating to the 6.6 kernel the password for my encryption does not longer
> > > work
> > > 
> > > Please unlock disk nvme0n1p3_crypt: **********
> > > device-mapper: table: 253:0: crypt: Error allocation crypto tfm (_ENOENT)
> > > device-mapper: ioctl: error adding target to table
> > > device-mapper: reload ioctl on nvme0n1p3_crypt (253:0) failed: No such file or
> > > directory
> > > cryptsetup: ERROR: nvme0n1p3_crypt: cryptsetup failed, bad password or options?
> > > 
> > > Everything works with 6.5. I also downgrade systemd and cryptosetup but no
> > > changes
> > 
> > I suspect this is related to changes around
> > https://git.kernel.org/linus/68cf01760bc0891074e813b9bb06d2696cac1c01
> > (but not verified, nor tracked down).
> 
> Actually after a more closer look on what is in the initrd: Bastian
> can be this due to switching to compressed modules? If this claim is
> correct then likely initramfs-tools would not copy them to the initrd.

It looks that we only consider *.ko uncompressed in
debian/initramfs/hooks/cryptroot:

add_modules() {
    local glob="$1" found=n
    shift
    for mod in $(find -H "$@" -name "$glob.ko" -type f -printf '%f\n'); do
        manual_add_modules "${mod%.ko}"
        found=y
    done
    [ "$found" = y ] && return 0 || return 1
}

but various modules are now with 6.6.4-1~exp1 compressed:

a relatively quick woraround would be to change the function to:

add_modules() {
    local glob="$1" found=n
    shift
    for mod in $(find -H "$@" -name "$glob.ko*" -type f -printf '%f\n'); do
        manual_add_modules "${mod%.ko*}"
        found=y
    done
    [ "$found" = y ] && return 0 || return 1
}

Is this the correct approach though? Which other hook functions might
be affected by the change in linux by switching to compressed modules?

Regards,
Salvatore


Reply to: