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

    From Salvatore Bonaccorso@21:1/5 to Salvatore Bonaccorso on Tue Dec 5 17:20:01 2023
    Hi,

    On Tue, Dec 05, 2023 at 05:14:20PM +0100, Salvatore Bonaccorso wrote:
    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?

    And in fact this is the solution proposed in #1036049.

    Regards,
    Salvatore

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)