Anastasia Lyupa [Tue, 30 Apr 2013 14:34:24 +0000 (18:34 +0400)]
[FIX] x86: failed to read stack in dbi_disarm_urp_inst
dbi_disarm_urp_inst:
- kprobe_opcode_t -> unsigned long for all address variables involved;
asm-x86: __arch_prepare_kretprobe:
- ri->sp = ®s->EREG(sp); -> ri->sp = regs->EREG(sp);
It let read stack and found trampoline in dbi_disarm_urp_inst.
There are still problems with _start and uClibc probes both on
arm and x86.
Anastasia Lyupa [Tue, 23 Apr 2013 13:42:14 +0000 (17:42 +0400)]
Merge branch 'dev' of 106.109.8.71:/srv/git/dbi into dev
Anastasia Lyupa [Tue, 23 Apr 2013 13:33:04 +0000 (17:33 +0400)]
[FIX] us probes: port SWAP to x86, kernel 3.8.2
Apply follow_page_mask and new get_user_pages_uprobe only for
LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0) rather than
LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0).
On x86 it doesn't work with KERNEL_VERSION(3, 8, 2).
Test on test/resources/src/pthread/pthread.c
Anastasia Lyupa [Tue, 23 Apr 2013 13:26:37 +0000 (17:26 +0400)]
[FIX] Correct addr in do_page_fault_j_pre_code
do_page_fault:
x86 -> do_page_fault(struct pt_regs *regs, unsigned long error_code)
unsigned long address = read_cr2();
arm -> do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
Nikita Kalyazin [Tue, 23 Apr 2013 08:32:27 +0000 (12:32 +0400)]
[FIX] not set retprobes for sys_exit_group and do_group_exit
Related to
f8fa40b9f377164f117eeec47832b5b3351b4ec5, where retprobe for
do_exit is not set.
These functions do not return by design (contain NOTREACHED comment),
so we do not need to set retprobes for them.
Nikita Kalyazin [Tue, 23 Apr 2013 06:58:05 +0000 (10:58 +0400)]
[FIX] x86: pending retprobes unregistering
This is the fix to
f8fa40b9f377164f117eeec47832b5b3351b4ec5 for x86.
What's been done here:
- kprobe_opcode_t -> unsigned long for all address variables involved;
- sp is set to ®s->sp, not regs->sp (which is upmost value on
stack).
Tested on:
- i386 Qemu, Buildroot rootfs, Linux kernel 3.8.2;
- ARM Qemu, Buildroot rootfs, Linux kernel 3.8.2;
- U1HD, GT-I8800_c210v30_cluster_20121002_1.
Nikita Kalyazin [Mon, 22 Apr 2013 08:08:58 +0000 (12:08 +0400)]
Nikita Kalyazin [Fri, 19 Apr 2013 11:28:21 +0000 (15:28 +0400)]
[FIX] __switch_to instrumentation on x86
What's been done here:
- patch next task: value on top of next's stack is patched;
- for that we need for regs structure (containing sp register);
- it requires changing API of the following functions:
- patch_suspended_task(): added regs argument;
- set_task_trampoline(): task -> patch address;
- arch_get_patch_addr() added (takes task and regs and returns
address to patch).
Known issues:
- x86 __switch_to instrumentation won't work at multi-core systems
(because there is no code, that removes retprobes on user stop;
because there is no regs argument passed to
dbi_unregister_kretprobe());
- I've left both old arch_get_task_pc()/arch_set_task_pc() and new
arch_get_patch_addr() APIs. They do rougly same things.
Tested on:
- i386 Qemu, Buildroot rootfs, Linux kernel 3.8.2;
- ARM Qemu, Buildroot rootfs, Linux kernel 3.8.2;
- U1HD, GT-I8800_c210v30_cluster_20121002_1.
Anastasia Lyupa [Tue, 9 Apr 2013 12:46:51 +0000 (16:46 +0400)]
[FIX] Continue repairing in case of linux-kernel=2.6
Replace follow_page_uprobe() by follow_page() in __get_user_pages_uprobe().
Anastasia Lyupa [Tue, 9 Apr 2013 12:31:21 +0000 (16:31 +0400)]
[FIX] linux<=2.6 compiling failed
Start reparing. Move follow_page_uprobe() under linux-version>=3.8.
Anastasia Lyupa [Tue, 9 Apr 2013 11:40:46 +0000 (15:40 +0400)]
Merge branch 'dev' of 106.109.8.71:/srv/git/dbi into dev
Conflicts:
src/modules/driver/us_proc_inst.c
Resolve a conflict in install_file_probes()
with
832ea7b4775fe7d70de3fd9e97e0865a94db0fe7
Anastasia Lyupa [Mon, 8 Apr 2013 15:56:47 +0000 (19:56 +0400)]
[FIX] Port SWAP to current Linux Kernel Mainline (3.9-rc5)
1. hlist_* API changed -> removed one argument;
2. file struct f_vfsmnt field removed -> replaced it with f_path.mnt;
3. do_mmap_pgoff() prototype changed -> added one argument;
4. __get_user_pages changed significantly -> stolen last version
and put to __get_user_pages_uprobe;
5. follow_page() mechanism changed -> added follow_page_mask()
Dmitry Kovalenko [Mon, 8 Apr 2013 06:25:35 +0000 (10:25 +0400)]
[FIX] removing probes from list if we can't handle it
Vyacheslav Cherkashin [Mon, 8 Apr 2013 05:41:01 +0000 (09:41 +0400)]
[FIX] remove 'trampoline_p' probe, when unload kprobe module
Dmitry Kovalenko [Tue, 2 Apr 2013 12:50:11 +0000 (16:50 +0400)]
[IMPROVE] Remove page_present() test on setting probe during start phase
Dmitry Kovalenko [Tue, 2 Apr 2013 12:44:31 +0000 (16:44 +0400)]
Merge branch 'dev' of ssh://106.109.8.71/srv/git/dbi into dev
Kudrjavtsev Nickita [Mon, 1 Apr 2013 18:44:45 +0000 (22:44 +0400)]
[FIX] fix strlen error in kernel space.
When lib path is zeroed daemon was crushed.
Kudrjavtsev Nickita [Tue, 26 Mar 2013 14:22:59 +0000 (18:22 +0400)]
[STYLE] delete comments from driver
Dmitry Kovalenko [Mon, 25 Mar 2013 05:54:20 +0000 (09:54 +0400)]
Merge branch 'dev' of ssh://106.109.8.71/srv/git/dbi into dev
Kudrjavtsev Nickita [Fri, 22 Mar 2013 15:33:16 +0000 (19:33 +0400)]
Merge branch 'dev' of 106.109.8.71:/srv/git/dbi into dev
Kudrjavtsev Nickita [Fri, 22 Mar 2013 15:31:56 +0000 (19:31 +0400)]
[FIX]fixing problem of failed second running on redwood_slp
Anastasia Lyupa [Fri, 22 Mar 2013 10:50:39 +0000 (14:50 +0400)]
[FIX] Flag VM_EXECUTABLE is not used in linux kernel since 3.7. I replace it by condition current->mm->exe_file == vma->vm_file in send_plt().
Dmitry Kovalenko [Fri, 22 Mar 2013 06:57:03 +0000 (10:57 +0400)]
Merge branch 'dev' of ssh://106.109.8.71/srv/git/dbi into dev
Dmitry Kovalenko [Fri, 22 Mar 2013 06:56:57 +0000 (10:56 +0400)]
[FEATURE] Put event at trace when insn can't be instrumented
Anastasia Lyupa [Thu, 21 Mar 2013 15:42:10 +0000 (19:42 +0400)]
[FIX] zero_pfn() redefinition if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0).
Dmitry Kovalenko [Tue, 19 Mar 2013 15:59:23 +0000 (19:59 +0400)]
Merge branch 'dev' of ssh://106.109.8.71/srv/git/dbi into dev
Dmitry Kovalenko [Tue, 19 Mar 2013 15:49:27 +0000 (19:49 +0400)]
[FIX] Correct deletion retprobes in thumb mode
New retprobe deletion method introduced by
f8fa40b9 doesn't handle thumb
Dmitry Kovalenko [Tue, 19 Mar 2013 13:50:54 +0000 (17:50 +0400)]
[FIX] Add filter duplicated probes insertion
Vasiliy Ulyanov [Tue, 19 Mar 2013 09:09:32 +0000 (13:09 +0400)]
[FIX] SWAP buffer memory copy optimization
while loop replaced with memcpy
Kudrjavtsev Nickita [Mon, 18 Mar 2013 15:29:02 +0000 (19:29 +0400)]
[FIX] fixing problem from Barinov when __switch_to was't collected
Artem Dergachev [Mon, 11 Mar 2013 09:10:53 +0000 (13:10 +0400)]
[FIX] Fix a typo leading to a compile error in error_storage.c
Kudrjavtsev Nickita [Tue, 5 Mar 2013 11:49:12 +0000 (15:49 +0400)]
Merge branch 'dev' of 106.109.8.71:/srv/git/dbi into dev
Kudrjavtsev Nickita [Tue, 5 Mar 2013 11:46:09 +0000 (15:46 +0400)]
if swap.ini has undefined path to lib or app driver will return this wrong path
Vyacheslav Cherkashin [Mon, 4 Mar 2013 13:13:59 +0000 (17:13 +0400)]
Merge branch 'dev' of 106.109.8.71:/srv/git/dbi into dev
Vyacheslav Cherkashin [Mon, 4 Mar 2013 13:12:09 +0000 (17:12 +0400)]
FIX stack offset in uretprobe disarming
Vasiliy Ulyanov [Mon, 4 Mar 2013 06:12:12 +0000 (10:12 +0400)]
Remove compile errors/warnings for some platforms (buffer module)
Vasiliy Ulyanov [Mon, 4 Mar 2013 05:38:04 +0000 (09:38 +0400)]
Merge branch 'dev' of 106.109.8.71:/srv/git/dbi into dev
Vasiliy Ulyanov [Mon, 4 Mar 2013 05:37:35 +0000 (09:37 +0400)]
Add buffer char device skeleton
Vyacheslav Cherkashin [Fri, 1 Mar 2013 09:37:23 +0000 (13:37 +0400)]
Merge branch 'dev' of 106.109.8.71:/srv/git/dbi into dev
Vyacheslav Cherkashin [Fri, 1 Mar 2013 08:17:20 +0000 (12:17 +0400)]
remove deadlock when disarming of children
recursive deadlock when call function 'dbi_disarm_urp_inst_for_task'
Andreev S.V [Fri, 1 Mar 2013 08:05:06 +0000 (12:05 +0400)]
Added functionality for trap (undef. instr) overhead calculation (ARM)
When compiled with support of this functionality swap kprobe module will send
SIGUSR1 signal to userspace application after triggering 100000 traps
(undef.instructions). After that it can calculate the overhead of one trap
(transition from user to kernel and from kernel to user) as a difference of
time when catching signal SIGUSR1 in signal handler and time before first
undef.instruction which is divided on amount of traps (100000).
Anastasia Lyupa [Thu, 28 Feb 2013 15:17:46 +0000 (19:17 +0400)]
optimization of pack_event_info
remove memset() from pack_task_event_info()
Vyacheslav Cherkashin [Wed, 27 Feb 2013 11:44:15 +0000 (15:44 +0400)]
Merge branch 'dev' of 106.109.8.71:/srv/git/dbi into dev
Vyacheslav Cherkashin [Wed, 27 Feb 2013 11:44:03 +0000 (15:44 +0400)]
add 'synchronize_sched' in func 'dbi_unregister_kprobe'
Vasiliy Ulyanov [Wed, 27 Feb 2013 07:59:16 +0000 (11:59 +0400)]
Merge branch 'dev' of 106.109.8.71:/srv/git/dbi into dev
Vasiliy Ulyanov [Wed, 27 Feb 2013 07:53:00 +0000 (11:53 +0400)]
Fix user space retprobe disarming
For functions which do not push return address on stack
Dmitry Kovalenko [Wed, 27 Feb 2013 06:06:03 +0000 (10:06 +0400)]
Totaly remove Makefiles without extension '.am'
Vyacheslav Barinov [Tue, 26 Feb 2013 12:55:11 +0000 (16:55 +0400)]
Small rm fix for directory deletion
Vyacheslav Cherkashin [Wed, 20 Feb 2013 14:56:46 +0000 (18:56 +0400)]
remove uretprobes in children task
Vasiliy Ulyanov [Tue, 19 Feb 2013 10:24:34 +0000 (14:24 +0400)]
Fix __switch_to instrumentation
Only the next task is patched instead of doing it for all
threads and processes
Vasiliy Ulyanov [Tue, 19 Feb 2013 10:14:01 +0000 (14:14 +0400)]
Substitute panic(...) with printk(...) in dbi_unregister_uretprobe
Sometimes the stack cannot be recovered after userspace instrumentation
because the corresponding function does not save LR value. In this case
it is better to print a warning instead of calling panic (the worst that
can happen is the instrumented application crashing with segmentation
fault). Currently the function _start is known to cause such an error.
But actually it never returns so it is save to ignore this issue and
just recycle the coresponding retprobe instance.
Alexander Aksenov [Fri, 15 Feb 2013 12:43:56 +0000 (16:43 +0400)]
Fix sparce warnings in kprobe
Vyacheslav Cherkashin [Thu, 14 Feb 2013 16:42:05 +0000 (20:42 +0400)]
Merge branch 'dev' of 106.109.8.71:/srv/git/dbi into dev
Vyacheslav Cherkashin [Thu, 14 Feb 2013 16:41:23 +0000 (20:41 +0400)]
check for correct values
Alexander Aksenov [Thu, 14 Feb 2013 16:27:46 +0000 (20:27 +0400)]
Fix new sparce warnings in kprobe
Vyacheslav Cherkashin [Thu, 14 Feb 2013 16:26:41 +0000 (20:26 +0400)]
kernel define 'pgd_offset_k' redefinition
Alexander Aksenov [Thu, 14 Feb 2013 15:57:31 +0000 (19:57 +0400)]
Merge branch 'dev' of 106.109.8.71:/srv/git/dbi into dev
Alexander Aksenov [Thu, 14 Feb 2013 15:57:21 +0000 (19:57 +0400)]
Fix new sparce warnings
Vyacheslav Cherkashin [Thu, 14 Feb 2013 14:47:03 +0000 (18:47 +0400)]
remove US probes set message
Alexander Aksenov [Wed, 13 Feb 2013 15:41:08 +0000 (19:41 +0400)]
Merge branch 'dev' of 106.109.8.71:/srv/git/dbi into dev
Alexander Aksenov [Wed, 13 Feb 2013 15:40:59 +0000 (19:40 +0400)]
Fix code style in dbi_kprobe_deps.c
Vasiliy Ulyanov [Wed, 13 Feb 2013 14:53:10 +0000 (18:53 +0400)]
Merge branch 'dev' of 106.109.8.71:/srv/git/dbi into dev
Alexander Aksenov [Wed, 13 Feb 2013 14:52:50 +0000 (18:52 +0400)]
Merge branch 'dev' of 106.109.8.71:/srv/git/dbi into dev
Alexander Aksenov [Wed, 13 Feb 2013 14:52:45 +0000 (18:52 +0400)]
Vasiliy Ulyanov [Wed, 13 Feb 2013 13:34:49 +0000 (17:34 +0400)]
Merge branch 'dev' of 106.109.8.71:/srv/git/dbi into dev
Vasiliy Ulyanov [Wed, 13 Feb 2013 13:13:52 +0000 (17:13 +0400)]
Merge branch 'dev' of 106.109.8.71:/srv/git/dbi into dev
Conflicts:
src/modules/driver/us_proc_inst.h
src/modules/kprobe/arch/dbi_kprobes.c
src/modules/kprobe/dbi_kprobes.c
Vasiliy Ulyanov [Wed, 13 Feb 2013 12:55:15 +0000 (16:55 +0400)]
Fix deferred retprobes deletion
Every retprobe instance now saves current sp value which is used to
recover original function's return address. Additionally this modification
may fix the issue with double return events for __switch_to function and also
possible memory leaks with __switch_to/do_exit retprobes instances.
Vasiliy Ulyanov [Wed, 13 Feb 2013 08:01:38 +0000 (12:01 +0400)]
Add possibility to retrieve userspace registers saved before syscall entry
Vyacheslav Cherkashin [Tue, 12 Feb 2013 14:06:01 +0000 (18:06 +0400)]
Merge branch 'dev' of 106.109.8.71:/srv/git/dbi into dev
Conflicts:
src/modules/driver/events.h
Vyacheslav Cherkashin [Tue, 12 Feb 2013 13:57:44 +0000 (17:57 +0400)]
remove old handlers setting method
Alexander Aksenov [Tue, 12 Feb 2013 13:55:30 +0000 (17:55 +0400)]
Merge branch 'dev' of 106.109.8.71:/srv/git/dbi into dev
Alexander Aksenov [Tue, 12 Feb 2013 13:55:21 +0000 (17:55 +0400)]
Final sparce warinigs fix for kprobe
Vitaliy Cherepanov [Tue, 12 Feb 2013 13:06:35 +0000 (17:06 +0400)]
Merge branch 'dev' of 106.109.8.71:/srv/git/dbi into dev
Alexander Aksenov [Tue, 12 Feb 2013 12:00:15 +0000 (16:00 +0400)]
Fix sparce warnings for kprobe module
Vitaliy Cherepanov [Tue, 12 Feb 2013 04:34:50 +0000 (08:34 +0400)]
Merge branch 'dev' of 106.109.8.71:/srv/git/dbi into dev
Alexander Aksenov [Mon, 11 Feb 2013 10:07:14 +0000 (14:07 +0400)]
Fix sparce warnings for sspt and us_proc_inst
Alexander Aksenov [Sat, 9 Feb 2013 15:32:52 +0000 (19:32 +0400)]
Fix errors in dbi_kprobes_deps module
Alexander Aksenov [Sat, 9 Feb 2013 15:31:55 +0000 (19:31 +0400)]
Fix pointer type recieved by mec_post_event
Alexander Aksenov [Sat, 9 Feb 2013 15:30:43 +0000 (19:30 +0400)]
gpKernProbe static now
Alexander Aksenov [Sat, 9 Feb 2013 15:29:40 +0000 (19:29 +0400)]
Fix sparce warnings in module module
Alexander Aksenov [Sat, 9 Feb 2013 15:29:03 +0000 (19:29 +0400)]
Fix getting char from va_args
Alexander Aksenov [Sat, 9 Feb 2013 15:27:50 +0000 (19:27 +0400)]
Fix functions declaration in us_proc_inst and in other files
Alexander Aksenov [Fri, 8 Feb 2013 13:20:55 +0000 (17:20 +0400)]
Fix sparse warnings in us_proc_inst #2
Vyacheslav Cherkashin [Fri, 8 Feb 2013 12:45:44 +0000 (16:45 +0400)]
Merge branch 'dev' of 106.109.8.71:/srv/git/dbi into dev
Alexander Aksenov [Thu, 7 Feb 2013 16:23:05 +0000 (20:23 +0400)]
Global fix sparse warnings for sspt module
Alexander Aksenov [Thu, 7 Feb 2013 13:56:42 +0000 (17:56 +0400)]
Remove get_file_probes function declaration from storage
Alexander Aksenov [Thu, 7 Feb 2013 13:23:29 +0000 (17:23 +0400)]
Fix part of sparce warnings in module.c
Alexander Aksenov [Thu, 7 Feb 2013 13:04:44 +0000 (17:04 +0400)]
Fix sparce warnings in sspt modules
Alexander Aksenov [Wed, 6 Feb 2013 16:36:35 +0000 (20:36 +0400)]
Fix sparse warinings in storage
Alexander Aksenov [Wed, 6 Feb 2013 16:36:02 +0000 (20:36 +0400)]
Removed useless case
Vitaliy Cherepanov [Wed, 6 Feb 2013 16:12:38 +0000 (20:12 +0400)]
FIX "let" remooved from patchko.sh for compability with shell
Vyacheslav Cherkashin [Wed, 6 Feb 2013 16:02:56 +0000 (20:02 +0400)]
Alexander Aksenov [Wed, 6 Feb 2013 14:06:15 +0000 (18:06 +0400)]
Fix sparse warnings in probes_manager.c
Alexander Aksenov [Wed, 6 Feb 2013 13:53:45 +0000 (17:53 +0400)]
One more fix sparse warnings in probes.c
Alexander Aksenov [Wed, 6 Feb 2013 13:50:08 +0000 (17:50 +0400)]
Fix sparse warnings in probes.c
Alexander Aksenov [Wed, 6 Feb 2013 13:36:05 +0000 (17:36 +0400)]
Fix sparse warnings in dbi_kprobe.h
Alexander Aksenov [Wed, 6 Feb 2013 12:53:38 +0000 (16:53 +0400)]
Fix sparse warnings in device_driver module
Alexander Aksenov [Wed, 6 Feb 2013 12:20:47 +0000 (16:20 +0400)]
Fix sparce warnings in ec module
Vyacheslav Cherkashin [Wed, 6 Feb 2013 11:58:30 +0000 (15:58 +0400)]
Merge branch 'dev' of 106.109.8.71:/srv/git/dbi into dev
Vyacheslav Cherkashin [Wed, 6 Feb 2013 11:57:14 +0000 (15:57 +0400)]
FIX vma checking