Ignore:
Timestamp:
May 13, 2014, 11:39:04 AM (11 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: update trunk to 3.6.23

Location:
trunk/server
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/server

  • trunk/server/source3/smbd/oplock_linux.c

    r751 r862  
    7676{
    7777        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();
    7886
    7987        /* First set the signal handler. */
    8088        if (linux_set_lease_sighandler(fd) == -1) {
    81                 return -1;
     89                saved_errno = errno;
     90                ret = -1;
     91                goto out;
    8292        }
    8393        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        }
    98105        return ret;
    99106}
Note: See TracChangeset for help on using the changeset viewer.