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);
121 struct pt_regs *regs, unsigned long address)
142 warn_bad_vsyscall(KERN_INFO, regs, "vsyscall read attempt denied -- look up the vsyscall kernel parameter if you need a workaround");
151 WARN_ON_ONCE(address != regs->ip);
154 warn_bad_vsyscall(KERN_INFO, regs,
164 warn_bad_vsyscall(KERN_WARNING, regs,
169 if (get_user(caller, (unsigned long __user *)regs->sp) != 0) {
170 warn_bad_vsyscall(KERN_WARNING, regs,
187 if (!write_ok_or_segv(regs->di, sizeof(struct __kernel_old_timeval)) ||
188 !write_ok_or_segv(regs->si, sizeof(struct timezone))) {
197 if (!write_ok_or_segv(regs->di, sizeof(__kernel_old_time_t))) {
206 if (!write_ok_or_segv(regs->di, sizeof(unsigned)) ||
207 !write_ok_or_segv(regs->si, sizeof(unsigned))) {
217 * Handle seccomp. regs->ip must be the original value.
223 regs->orig_ax = syscall_nr;
224 regs->ax = -ENOSYS;
226 if ((!tmp && regs->orig_ax != syscall_nr) || regs->ip != address) {
227 warn_bad_vsyscall(KERN_DEBUG, regs,
232 regs->orig_ax = -1;
246 /* this decodes regs->di and regs->si on its own */
247 ret = __x64_sys_gettimeofday(regs);
251 /* this decodes regs->di on its own */
252 ret = __x64_sys_time(regs);
256 /* while we could clobber regs->dx, we didn't in the past... */
257 orig_dx = regs->dx;
258 regs->dx = 0;
259 /* this decodes regs->di, regs->si and regs->dx on its own */
260 ret = __x64_sys_getcpu(regs);
261 regs->dx = orig_dx;
270 warn_bad_vsyscall(KERN_INFO, regs,
284 regs->ax = ret;
288 regs->ip = caller;
289 regs->sp += 8;