Projects STRLCPY criu Commits 7905b9f6
🤬
Revision indexing in progress... (symbol navigation in revisions will be accurate after indexed)
  • ■ ■ ■ ■ ■
    compel/arch/aarch64/src/lib/include/uapi/asm/sigframe.h
    skipped 60 lines
    61 61  #define RT_SIGFRAME_FPU(rt_sigframe) (&RT_SIGFRAME_AUX_CONTEXT(rt_sigframe)->fpsimd)
    62 62  #define RT_SIGFRAME_OFFSET(rt_sigframe) 0
    63 63   
     64 +#define rt_sigframe_erase_sigset(sigframe) \
     65 + memset(&sigframe->uc.uc_sigmask, 0, sizeof(k_rtsigset_t))
     66 +#define rt_sigframe_copy_sigset(sigframe, from) \
     67 + memcpy(&sigframe->uc.uc_sigmask, from, sizeof(k_rtsigset_t))
     68 + 
    64 69  #endif /* UAPI_COMPEL_ASM_SIGFRAME_H__ */
    65 70   
  • ■ ■ ■ ■ ■
    compel/arch/arm/src/lib/include/uapi/asm/sigframe.h
    skipped 81 lines
    82 82  #define RT_SIGFRAME_FPU(rt_sigframe) (&RT_SIGFRAME_AUX_SIGFRAME(rt_sigframe)->vfp)
    83 83  #define RT_SIGFRAME_OFFSET(rt_sigframe) 0
    84 84   
     85 +#define rt_sigframe_erase_sigset(sigframe) \
     86 + memset(&sigframe->sig.uc.uc_sigmask, 0, sizeof(k_rtsigset_t))
     87 +#define rt_sigframe_copy_sigset(sigframe, from) \
     88 + memcpy(&sigframe->sig.uc.uc_sigmask, from, sizeof(k_rtsigset_t))
     89 + 
    85 90  #endif /* UAPI_COMPEL_ASM_SIGFRAME_H__ */
    86 91   
  • ■ ■ ■ ■ ■
    compel/arch/ppc64/src/lib/include/uapi/asm/sigframe.h
    skipped 62 lines
    63 63  #define RT_SIGFRAME_HAS_FPU(rt_sigframe) (1)
    64 64  #define RT_SIGFRAME_FPU(rt_sigframe) (&(rt_sigframe)->uc.uc_mcontext)
    65 65   
     66 +#define rt_sigframe_erase_sigset(sigframe) \
     67 + memset(&sigframe->uc.uc_sigmask, 0, sizeof(k_rtsigset_t))
     68 +#define rt_sigframe_copy_sigset(sigframe, from) \
     69 + memcpy(&sigframe->uc.uc_sigmask, from, sizeof(k_rtsigset_t))
     70 + 
    66 71  #define MSR_TMA (1UL<<34) /* bit 29 Trans Mem state: Transactional */
    67 72  #define MSR_TMS (1UL<<33) /* bit 30 Trans Mem state: Suspended */
    68 73  #define MSR_TM (1UL<<32) /* bit 31 Trans Mem Available */
    skipped 7 lines
  • ■ ■ ■ ■ ■
    compel/arch/s390/src/lib/include/uapi/asm/sigframe.h
    skipped 71 lines
    72 72  #define RT_SIGFRAME_REGIP(rt_sigframe) (rt_sigframe)->uc.uc_mcontext.regs.psw.addr
    73 73  #define RT_SIGFRAME_HAS_FPU(rt_sigframe) (1)
    74 74   
     75 +#define rt_sigframe_erase_sigset(sigframe) \
     76 + memset(&sigframe->uc.uc_sigmask, 0, sizeof(k_rtsigset_t))
     77 +#define rt_sigframe_copy_sigset(sigframe, from) \
     78 + memcpy(&sigframe->uc.uc_sigmask, from, sizeof(k_rtsigset_t))
     79 + 
    75 80  #endif /* UAPI_COMPEL_ASM_SIGFRAME_H__ */
    76 81   
  • ■ ■ ■ ■ ■
    compel/arch/x86/src/lib/include/uapi/asm/sigframe.h
    skipped 2 lines
    3 3   
    4 4  #include <stdint.h>
    5 5  #include <stdbool.h>
     6 +#include <string.h>
    6 7   
    7 8  #include <compel/asm/fpu.h>
    8 9  #include <compel/plugins/std/syscall-codes.h>
    skipped 66 lines
    75 76   
    76 77  typedef uint32_t compat_uptr_t;
    77 78  typedef uint32_t compat_size_t;
     79 +typedef uint32_t compat_sigset_word;
    78 80   
    79 81  typedef struct compat_siginfo {
    80 82   int si_signo;
    skipped 8 lines
    89 91   compat_size_t ss_size;
    90 92  } compat_stack_t;
    91 93   
     94 +#define _COMPAT_NSIG 64
     95 +#define _COMPAT_NSIG_BPW 32
     96 +#define _COMPAT_NSIG_WORDS (_COMPAT_NSIG / _COMPAT_NSIG_BPW)
     97 + 
     98 +typedef struct {
     99 + compat_sigset_word sig[_COMPAT_NSIG_WORDS];
     100 +} compat_sigset_t;
     101 + 
    92 102  struct ucontext_ia32 {
    93 103   unsigned int uc_flags;
    94 104   unsigned int uc_link;
    95 105   compat_stack_t uc_stack;
    96 106   struct rt_sigcontext_32 uc_mcontext;
    97  - k_rtsigset_t uc_sigmask; /* mask last for extensibility */
     107 + compat_sigset_t uc_sigmask; /* mask last for extensibility */
    98 108  };
    99 109   
    100 110  struct rt_sigframe_ia32 {
    skipped 26 lines
    127 137   bool is_native;
    128 138  };
    129 139   
    130  -#define RT_SIGFRAME_UC_SIGMASK(rt_sigframe) \
    131  - ((rt_sigframe->is_native) ? \
    132  - (&rt_sigframe->native.uc.uc_sigmask) : \
    133  - ((k_rtsigset_t *)(void *)&rt_sigframe->compat.uc.uc_sigmask))
     140 +static inline
     141 +void rt_sigframe_copy_sigset(struct rt_sigframe *to, k_rtsigset_t *from)
     142 +{
     143 + size_t sz = sizeof(k_rtsigset_t);
     144 + 
     145 + BUILD_BUG_ON(sz != sizeof(compat_sigset_t));
     146 + if (to->is_native)
     147 + memcpy(&to->native.uc.uc_sigmask, from, sz);
     148 + else
     149 + memcpy(&to->compat.uc.uc_sigmask, from, sz);
     150 +}
     151 + 
     152 +static inline
     153 +void rt_sigframe_erase_sigset(struct rt_sigframe *sigframe)
     154 +{
     155 + size_t sz = sizeof(k_rtsigset_t);
     156 + 
     157 + if (sigframe->is_native)
     158 + memset(&sigframe->native.uc.uc_sigmask, 0, sz);
     159 + else
     160 + memset(&sigframe->compat.uc.uc_sigmask, 0, sz);
     161 +}
    134 162   
    135 163  #define RT_SIGFRAME_REGIP(rt_sigframe) \
    136 164   ((rt_sigframe->is_native) ? \
    skipped 57 lines
  • ■ ■ ■ ■
    compel/arch/x86/src/lib/infect.c
    skipped 115 lines
    116 116   struct i387_fxsave_struct *fxsave)
    117 117  {
    118 118   struct fpxreg *from = (struct fpxreg *)&fxsave->st_space[0];
    119  - struct fpreg *to = (struct fpreg *)&env->st_space[0];
     119 + struct fpreg *to = (struct fpreg *)env->st_space;
    120 120   int i;
    121 121   
    122 122   env->cwd = fxsave->cwd | 0xffff0000u;
    skipped 468 lines
  • ■ ■ ■ ■ ■
    compel/src/lib/infect.c
    skipped 1129 lines
    1130 1130   return 0;
    1131 1131  }
    1132 1132   
    1133  -#ifndef RT_SIGFRAME_UC_SIGMASK
    1134  -#define RT_SIGFRAME_UC_SIGMASK(sigframe) \
    1135  - (k_rtsigset_t*)(void *)&RT_SIGFRAME_UC(sigframe)->uc_sigmask
    1136  -#endif
    1137  - 
    1138 1133  static int make_sigframe_plain(void *from, struct rt_sigframe *f, struct rt_sigframe *rtf, k_rtsigset_t *b)
    1139 1134  {
    1140 1135   struct plain_regs_struct *prs = from;
    1141  - k_rtsigset_t *blk_sigset;
    1142 1136   
    1143 1137   /*
    1144 1138   * Make sure it's zeroified.
    skipped 3 lines
    1148 1142   if (sigreturn_prep_regs_plain(f, &prs->regs, &prs->fpregs))
    1149 1143   return -1;
    1150 1144   
    1151  - blk_sigset = RT_SIGFRAME_UC_SIGMASK(f);
    1152 1145   if (b)
    1153  - memcpy(blk_sigset, b, sizeof(k_rtsigset_t));
    1154  - else
    1155  - memset(blk_sigset, 0, sizeof(k_rtsigset_t));
     1146 + rt_sigframe_copy_sigset(f, b);
    1156 1147   
    1157 1148   if (RT_SIGFRAME_HAS_FPU(f)) {
    1158 1149   if (sigreturn_prep_fpu_frame_plain(f, rtf))
    skipped 442 lines
  • ■ ■ ■ ■ ■
    criu/sigframe.c
    skipped 17 lines
    18 18  }
    19 19  #endif
    20 20   
    21  -#ifndef RT_SIGFRAME_UC_SIGMASK
    22  -#define RT_SIGFRAME_UC_SIGMASK(sigframe) \
    23  - (k_rtsigset_t*)&RT_SIGFRAME_UC(sigframe)->uc_sigmask
    24  -#endif
    25  - 
    26 21  int construct_sigframe(struct rt_sigframe *sigframe,
    27 22   struct rt_sigframe *rsigframe,
    28 23   k_rtsigset_t *blkset,
    29 24   CoreEntry *core)
    30 25  {
    31  - k_rtsigset_t *blk_sigset;
    32  - 
    33 26   /*
    34 27   * Copy basic register set in the first place: this will set
    35 28   * rt_sigframe type: native/compat.
    skipped 1 lines
    37 30   if (restore_gpregs(sigframe, CORE_THREAD_ARCH_INFO(core)->gpregs))
    38 31   return -1;
    39 32   
    40  - blk_sigset = RT_SIGFRAME_UC_SIGMASK(sigframe);
    41 33   if (blkset)
    42  - memcpy(blk_sigset, blkset, sizeof(k_rtsigset_t));
     34 + rt_sigframe_copy_sigset(sigframe, blkset);
    43 35   else
    44  - memset(blk_sigset, 0, sizeof(k_rtsigset_t));
     36 + rt_sigframe_erase_sigset(sigframe);
    45 37   
    46 38   if (restore_fpu(sigframe, core))
    47 39   return -1;
    skipped 10 lines
Please wait...
Page is in error, reload to recover