Changeset 862 for trunk/server/source3/smbd/oplock_linux.c
- Timestamp:
- May 13, 2014, 11:39:04 AM (11 years ago)
- Location:
- trunk/server
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/server
- Property svn:mergeinfo changed
/vendor/current merged: 860
- Property svn:mergeinfo changed
-
trunk/server/source3/smbd/oplock_linux.c
r751 r862 76 76 { 77 77 int ret; 78 int saved_errno; 79 80 /* 81 * Ensure the lease owner is root to allow 82 * correct delivery of lease-break signals. 83 */ 84 85 become_root(); 78 86 79 87 /* First set the signal handler. */ 80 88 if (linux_set_lease_sighandler(fd) == -1) { 81 return -1; 89 saved_errno = errno; 90 ret = -1; 91 goto out; 82 92 } 83 93 ret = fcntl(fd, F_SETLEASE, leasetype); 84 if (ret == -1 && errno == EACCES) { 85 set_effective_capability(LEASE_CAPABILITY); 86 /* 87 * Bug 8974 - work around Linux kernel bug 88 * https://bugzilla.kernel.org/show_bug.cgi?id=43336. 89 * "fcntl(F_SETLEASE) resets signal number when 90 * called multiple times" 91 */ 92 if (linux_set_lease_sighandler(fd) == -1) { 93 return -1; 94 } 95 ret = fcntl(fd, F_SETLEASE, leasetype); 96 } 97 94 if (ret == -1) { 95 saved_errno = errno; 96 } 97 98 out: 99 100 unbecome_root(); 101 102 if (ret == -1) { 103 errno = saved_errno; 104 } 98 105 return ret; 99 106 }
Note:
See TracChangeset
for help on using the changeset viewer.