Package: src:refpolicy
Version: 2:2.20260906-1
Severity: serious
Tags: patch
User: [email protected]
Usertags: origin-ubuntu stonking ubuntu-patch

Dear Maintainer,

In refpolicy 2:2.20260906-1, an unconditional abort was added to 
debian/preinst.policy:

  VER=$(uname -r |cut -c1)
  if [ "$VER" -eq "6" ]; then
    echo "This policy fails to load on Debian 6.x kernels so aborting"
    exit 1
  fi

This check causes severe regressions across Debian and Ubuntu:

1. It blocks installation and upgrade on any 6.x kernel, including the standard 
Debian trixie kernel (6.12) and current Ubuntu kernels.
2. Checking uname -r against the running kernel breaks package installation 
inside containers (LXC, Docker), chroots, debootstrap, disk image builders, and 
CI testbeds. In these environments, SELinux is inactive and the running host 
kernel is unrelated to policy usage.
3. In debian/postinst.policy, semodule is already called with -n (noreload) 
whenever SELinux is not active or not the configured flavour:
     if [ "${SELINUXTYPE}" != "${flavour}" ] || ! selinuxenabled; then
         noreload='-n'
     fi
   Therefore, when SELinux is not active, the policy is never loaded into the 
kernel during package installation.
4. Autopkgtests for refpolicy (validate-default, validate-mls) fail on all 6.x 
architectures with "badpkg" because the packages cannot even be unpacked. This 
is currently blocking the migration of refpolicy 2:2.20260906-1 to Debian 
testing across amd64, arm64, armhf, ppc64el, and i386.

To resolve this without risking kernel panics on systems actively running 
SELinux on 6.x kernels, the check should only evaluate if SELinux is actually 
active on the system (selinuxenabled). If SELinux is inactive, chroot/container 
installations and autopkgtests should proceed cleanly.

This issue is also tracked in Ubuntu at:
https://bugs.launchpad.net/ubuntu/+source/refpolicy/+bug/2169263

The patch below guards the preinst check with a selinuxenabled test:

--- a/debian/preinst.policy
+++ b/debian/preinst.policy
@@ -1,9 +1,11 @@
 #!/bin/sh
 set -e
 
-VER=$(uname -r |cut -c1)
-if [ "$VER" -eq "6" ]; then
-  echo "This policy fails to load on Debian 6.x kernels so aborting"
-  exit 1
+if [ -x /usr/sbin/selinuxenabled ] && selinuxenabled; then
+  VER=$(uname -r | cut -d. -f1)
+  if [ "$VER" = "6" ]; then
+    echo "This policy fails to load on Debian 6.x kernels so aborting"
+    exit 1
+  fi
 fi
 

Reply via email to