~ubuntu-branches/ubuntu/trusty/qemu/trusty-proposed

« back to all changes in this revision

Viewing changes to linux-user/syscall.c

  • Committer: Package Import Robot
  • Author(s): Serge Hallyn, dann frazier, Serge Hallyn
  • Date: 2014-03-06 16:15:50 UTC
  • Revision ID: package-import@ubuntu.com-20140306161550-83y1d9kr1t4t19tz
Tags: 1.7.0+dfsg-3ubuntu5
[ dann frazier ]
* Add patches from the susematz tree to avoid intermittent segfaults:
   - ubuntu/signal-added-a-wrapper-for-sigprocmask-function.patch
   - ubuntu/signal-sigsegv-protection-on-do_sigprocmask.patch
   - ubuntu/Don-t-block-SIGSEGV-at-more-places.patch

[ Serge Hallyn ]
* Modify do_sigprocmask to only change behavior for aarch64.
  (LP: #1285363)

Show diffs side-by-side

added added

removed removed

Lines of Context:
6075
6075
        {
6076
6076
            sigset_t cur_set;
6077
6077
            abi_ulong target_set;
6078
 
            sigprocmask(0, NULL, &cur_set);
 
6078
            do_sigprocmask(0, NULL, &cur_set);
6079
6079
            host_to_target_old_sigset(&target_set, &cur_set);
6080
6080
            ret = target_set;
6081
6081
        }
6086
6086
        {
6087
6087
            sigset_t set, oset, cur_set;
6088
6088
            abi_ulong target_set = arg1;
6089
 
            sigprocmask(0, NULL, &cur_set);
 
6089
            do_sigprocmask(0, NULL, &cur_set);
6090
6090
            target_to_host_old_sigset(&set, &target_set);
6091
6091
            sigorset(&set, &set, &cur_set);
6092
 
            sigprocmask(SIG_SETMASK, &set, &oset);
 
6092
            do_sigprocmask(SIG_SETMASK, &set, &oset);
6093
6093
            host_to_target_old_sigset(&target_set, &oset);
6094
6094
            ret = target_set;
6095
6095
        }
6120
6120
            mask = arg2;
6121
6121
            target_to_host_old_sigset(&set, &mask);
6122
6122
 
6123
 
            ret = get_errno(sigprocmask(how, &set, &oldset));
 
6123
            ret = get_errno(do_sigprocmask(how, &set, &oldset));
6124
6124
            if (!is_error(ret)) {
6125
6125
                host_to_target_old_sigset(&mask, &oldset);
6126
6126
                ret = mask;
6154
6154
                how = 0;
6155
6155
                set_ptr = NULL;
6156
6156
            }
6157
 
            ret = get_errno(sigprocmask(how, set_ptr, &oldset));
 
6157
            ret = get_errno(do_sigprocmask(how, set_ptr, &oldset));
6158
6158
            if (!is_error(ret) && arg3) {
6159
6159
                if (!(p = lock_user(VERIFY_WRITE, arg3, sizeof(target_sigset_t), 0)))
6160
6160
                    goto efault;
6194
6194
                how = 0;
6195
6195
                set_ptr = NULL;
6196
6196
            }
6197
 
            ret = get_errno(sigprocmask(how, set_ptr, &oldset));
 
6197
            ret = get_errno(do_sigprocmask(how, set_ptr, &oldset));
6198
6198
            if (!is_error(ret) && arg3) {
6199
6199
                if (!(p = lock_user(VERIFY_WRITE, arg3, sizeof(target_sigset_t), 0)))
6200
6200
                    goto efault;
8198
8198
            }
8199
8199
            mask = arg2;
8200
8200
            target_to_host_old_sigset(&set, &mask);
8201
 
            sigprocmask(how, &set, &oldset);
 
8201
            do_sigprocmask(how, &set, &oldset);
8202
8202
            host_to_target_old_sigset(&mask, &oldset);
8203
8203
            ret = mask;
8204
8204
        }