]> git.proxmox.com Git - mirror_zfs.git/commitdiff
autoconf: Fail when __copy_from_user_inatomic is a non-GPL symbol
authorszubersk <szuberskidamian@gmail.com>
Sat, 7 May 2022 00:53:42 +0000 (00:53 +0000)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 11 May 2022 17:32:51 +0000 (10:32 -0700)
A followup to 849c14e04844a2f0e1f7e42886c2cef083563f35
Fix https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1009242

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: szubersk <szuberskidamian@gmail.com>
Closes #13389

config/kernel-copy-from-user-inatomic.m4
module/os/linux/zfs/zfs_uio.c

index 5fddaca59c20055129cc0e2e559dab3b6b8a30b3..fec354b2f38e32e959024bf1d8608c8a7aab5803 100644 (file)
@@ -18,9 +18,12 @@ AC_DEFUN([ZFS_AC_KERNEL___COPY_FROM_USER_INATOMIC], [
        AC_MSG_CHECKING([whether __copy_from_user_inatomic is available])
        ZFS_LINUX_TEST_RESULT([__copy_from_user_inatomic_license], [
                AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE___COPY_FROM_USER_INATOMIC, 1,
-                   [__copy_from_user_inatomic is available])
        ], [
                AC_MSG_RESULT(no)
+               AC_MSG_ERROR([
+       *** The `__copy_from_user_inatomic()` Linux kernel function is
+       *** incompatible with the CDDL license and will prevent the module
+       *** linking stage from succeeding.  OpenZFS cannot be compiled.
+               ])
        ])
 ])
index 0d4b4c5831182268bad98244d4a5b2328fe564e0..4f31bcb5959d291411c547533ffaa44e2dff009f 100644 (file)
@@ -75,7 +75,6 @@ zfs_uiomove_iov(void *p, size_t n, zfs_uio_rw_t rw, zfs_uio_t *uio)
                        } else {
                                unsigned long b_left = 0;
                                if (uio->uio_fault_disable) {
-#if defined(HAVE___COPY_FROM_USER_INATOMIC)
                                        if (!zfs_access_ok(VERIFY_READ,
                                            (iov->iov_base + skip), cnt)) {
                                                return (EFAULT);
@@ -85,9 +84,6 @@ zfs_uiomove_iov(void *p, size_t n, zfs_uio_rw_t rw, zfs_uio_t *uio)
                                            __copy_from_user_inatomic(p,
                                            (iov->iov_base + skip), cnt);
                                        pagefault_enable();
-#else
-                                       return (EFAULT);
-#endif
                                } else {
                                        b_left =
                                            copy_from_user(p,