fix
authorMiklos Szeredi <miklos@szeredi.hu>
Fri, 21 Jan 2005 16:46:58 +0000 (16:46 +0000)
committerMiklos Szeredi <miklos@szeredi.hu>
Fri, 21 Jan 2005 16:46:58 +0000 (16:46 +0000)
ChangeLog
kernel/configure.ac
kernel/dev.c

index a4bd92fce0e1314da6c13e5ccb1be010520875ab..1b20677f7f6ef92315dc3ec27fe2adefd0492354 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,9 @@
 
        * fusermount: fix uid checking bug.  Patch by Adam Connell
 
+       * KERNEL: fix compile on various RedHad patched 2.4 kernels.
+       Patch by Keshava Gowda
+
 2005-01-20  Miklos Szeredi <miklos@szeredi.hu>
 
        * KERNEL: provide correct llseek semantics for fuse device (fixes
index a9f1ee85033c76396aba862472253a0f0e429080..1358f47c5d3aa8c6c04032e74f7ec6fad45aab71 100644 (file)
@@ -50,6 +50,10 @@ if echo "$kernsrcver" | grep -q "^2.4"; then
                AC_DEFINE(HAVE_I_SIZE_FUNC, 1,
                        [Kernel has i_size_read() and i_size_write() functions]),,
                [#include <linux/fs.h>])
+       AC_CHECK_DECL(recalc_sigpending_tsk,
+               AC_DEFINE(HAVE_RECALC_SIGPENDING_TSK, 1,
+                       [Kernel has recalc_sigpending_tsk() function]),,
+               [#include <linux/sched.h>])
        CFLAGS="$old_cflags"
 else
        fuse_configured=no
index ef46eb9fb2f7babce0df8d40ae8a4b3a681d72c5..8ce078bac71b4f7e9a0a25b03289bdd674f7446c 100644 (file)
@@ -65,6 +65,24 @@ static inline void restore_sigs(sigset_t *oldset)
        sigprocmask(SIG_SETMASK, oldset, NULL);
 }
 #else
+#ifdef HAVE_RECALC_SIGPENDING_TSK
+static inline void block_sigs(sigset_t *oldset)
+{
+       spin_lock_irq(&current->sighand->siglock);
+       *oldset = current->blocked;
+       siginitsetinv(&current->blocked, sigmask(SIGKILL) & ~oldset->sig[0]);
+       recalc_sigpending();
+       spin_unlock_irq(&current->sighand->siglock);
+}
+
+static inline void restore_sigs(sigset_t *oldset)
+{
+       spin_lock_irq(&current->sighand->siglock);
+       current->blocked = *oldset;
+       recalc_sigpending();
+       spin_unlock_irq(&current->sighand->siglock);
+}
+#else
 static inline void block_sigs(sigset_t *oldset)
 {
        spin_lock_irq(&current->sigmask_lock);
@@ -82,6 +100,7 @@ static inline void restore_sigs(sigset_t *oldset)
        spin_unlock_irq(&current->sigmask_lock);
 }
 #endif
+#endif
 
 void fuse_reset_request(struct fuse_req *req)
 {