Lines Matching refs:regs

73 static void warn_bad_vsyscall(const char *level, struct pt_regs *regs,
81 message, regs->ip, regs->cs,
82 regs->sp, regs->ax, regs->si, regs->di);
116 struct pt_regs *regs, unsigned long address)
135 warn_bad_vsyscall(KERN_INFO, regs, "vsyscall read attempt denied -- look up the vsyscall kernel parameter if you need a workaround");
144 WARN_ON_ONCE(address != regs->ip);
147 warn_bad_vsyscall(KERN_INFO, regs,
157 warn_bad_vsyscall(KERN_WARNING, regs,
162 if (get_user(caller, (unsigned long __user *)regs->sp) != 0) {
163 warn_bad_vsyscall(KERN_WARNING, regs,
178 if (!write_ok_or_segv(regs->di, sizeof(struct __kernel_old_timeval)) ||
179 !write_ok_or_segv(regs->si, sizeof(struct timezone))) {
188 if (!write_ok_or_segv(regs->di, sizeof(__kernel_old_time_t))) {
197 if (!write_ok_or_segv(regs->di, sizeof(unsigned)) ||
198 !write_ok_or_segv(regs->si, sizeof(unsigned))) {
208 * Handle seccomp. regs->ip must be the original value.
214 regs->orig_ax = syscall_nr;
215 regs->ax = -ENOSYS;
217 if ((!tmp && regs->orig_ax != syscall_nr) || regs->ip != address) {
218 warn_bad_vsyscall(KERN_DEBUG, regs,
223 regs->orig_ax = -1;
233 /* this decodes regs->di and regs->si on its own */
234 ret = __x64_sys_gettimeofday(regs);
238 /* this decodes regs->di on its own */
239 ret = __x64_sys_time(regs);
243 /* while we could clobber regs->dx, we didn't in the past... */
244 orig_dx = regs->dx;
245 regs->dx = 0;
246 /* this decodes regs->di, regs->si and regs->dx on its own */
247 ret = __x64_sys_getcpu(regs);
248 regs->dx = orig_dx;
255 warn_bad_vsyscall(KERN_INFO, regs,
260 regs->ax = ret;
264 regs->ip = caller;
265 regs->sp += 8;