--- samba-3.6.5.orig/source3/smbd/oplock_linux.c +++ samba-3.6.5/source3/smbd/oplock_linux.c @@ -76,9 +76,14 @@ int linux_setlease(int fd, int leasetype { int ret; + // We call linux_set_sighandler() each time to work around Linux kernel bug #43336 + // ("fcntl(F_SETLEASE) resets signal number when called multiple times") + + linux_set_lease_sighandler(fd); ret = fcntl(fd, F_SETLEASE, leasetype); if (ret == -1 && errno == EACCES) { set_effective_capability(LEASE_CAPABILITY); + linux_set_lease_sighandler(fd); ret = fcntl(fd, F_SETLEASE, leasetype); }