aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2011-04-29ARM: 6891/1: prevent heap corruption in OABI semtimedopDan Rosenberg1-1/+1
When CONFIG_OABI_COMPAT is set, the wrapper for semtimedop does not bound the nsops argument. A sufficiently large value will cause an integer overflow in allocation size, followed by copying too much data into the allocated buffer. Fix this by restricting nsops to SEMOPM. Untested. Cc: [email protected] Signed-off-by: Dan Rosenberg <[email protected]> Signed-off-by: Russell King <[email protected]>
2011-04-29[media] Missing frontend config for LME DM04/QQBOXMalcolm Priestley1-0/+2
Forgot to add the DVB_STV0299/DVB_PLL to config Signed-off-by: Malcolm Priestley <[email protected]> Signed-off-by: Mauro Carvalho Chehab <[email protected]>
2011-04-29[media] rc_core: avoid kernel oops when rmmod saa7134Hussam Al-Tayeb1-1/+2
The following is a patch to avoid a kernel oops when running rmmod saa7134 on kernel 2.6.27.1. The change is as suggested by mchehab on irc.freenode.org Signed-off-by: Hussam Al-Tayeb <[email protected]> Signed-off-by: Mauro Carvalho Chehab <[email protected]>
2011-04-29hwmon: (lm85) Fix error paths in probe functionJean Delvare1-2/+2
We must remove all files we created, even in error cases. Fixes second part of kernel bug #34072: https://bugzilla.kernel.org/show_bug.cgi?id=34072 Signed-off-by: Jean Delvare <[email protected]> Acked-by: Guenter Roeck <[email protected]>
2011-04-29hwmon: (lm85) Add missing list terminatorsJean Delvare1-0/+2
Fixes kernel bug #34072: https://bugzilla.kernel.org/show_bug.cgi?id=34072 Signed-off-by: Jean Delvare <[email protected]> Acked-by: Guenter Roeck <[email protected]>
2011-04-29hwmon: (adm1021) Clarify documentation regarding Xeon processorsJean Delvare2-19/+20
Recent Xeon processor thermal sensors are supported by the coretemp driver and not the adm1021 driver. Only one old generation of Xeon processors (the first Netburst ones) are supported by the adm1021 driver. Reported-by: Darren Hart <[email protected]> Signed-off-by: Jean Delvare <[email protected]> Acked-by: Guenter Roeck <[email protected]>
2011-04-29hwmon: (lm90) Fix update interval information in driver documentationGuenter Roeck1-3/+3
The lm90 driver's attribute update interval is configurable. Reflect this information in the driver documentation. Signed-off-by: Guenter Roeck <[email protected]> Signed-off-by: Jean Delvare <[email protected]>
2011-04-29hwmon: (lm90) Add support for ADT7461A and NCT1008Guenter Roeck3-17/+36
This patch adds support for ADT7461A and NCT1008 to the lm90 driver. Both chips have identical functionality and report the same manufacturing ID and device ID values. Signed-off-by: Guenter Roeck <[email protected]> Signed-off-by: Jean Delvare <[email protected]>
2011-04-29[media] imon: add conditional locking in change_protocolJarod Wilson1-4/+27
The imon_ir_change_protocol function gets called two different ways, one way is from rc_register_device, for initial protocol selection/setup, and the other is via a userspace-initiated protocol change request, either by direct sysfs prodding or by something like ir-keytable. In the rc_register_device case, the imon context lock is already held, but when initiated from userspace, it is not, so we must acquire it, prior to calling send_packet, which requires that the lock is held. Without this change, there's an easily reproduceable deadlock when another function calls send_packet (such as either of the display write fops) after a userspace-initiated change_protocol. With a lock-debugging-enabled kernel, I was getting this: [ 15.014153] ===================================== [ 15.015048] [ BUG: bad unlock balance detected! ] [ 15.015048] ------------------------------------- [ 15.015048] ir-keytable/773 is trying to release lock (&ictx->lock) at: [ 15.015048] [<ffffffff814c6297>] mutex_unlock+0xe/0x10 [ 15.015048] but there are no more locks to release! [ 15.015048] [ 15.015048] other info that might help us debug this: [ 15.015048] 2 locks held by ir-keytable/773: [ 15.015048] #0: (&buffer->mutex){+.+.+.}, at: [<ffffffff8119d400>] sysfs_write_file+0x3c/0x144 [ 15.015048] #1: (s_active#87){.+.+.+}, at: [<ffffffff8119d4ab>] sysfs_write_file+0xe7/0x144 [ 15.015048] [ 15.015048] stack backtrace: [ 15.015048] Pid: 773, comm: ir-keytable Not tainted 2.6.38.4-20.fc15.x86_64.debug #1 [ 15.015048] Call Trace: [ 15.015048] [<ffffffff81089715>] ? print_unlock_inbalance_bug+0xca/0xd5 [ 15.015048] [<ffffffff8108b35c>] ? lock_release_non_nested+0xc1/0x263 [ 15.015048] [<ffffffff814c6297>] ? mutex_unlock+0xe/0x10 [ 15.015048] [<ffffffff814c6297>] ? mutex_unlock+0xe/0x10 [ 15.015048] [<ffffffff8108b67b>] ? lock_release+0x17d/0x1a4 [ 15.015048] [<ffffffff814c6229>] ? __mutex_unlock_slowpath+0xc5/0x125 [ 15.015048] [<ffffffff814c6297>] ? mutex_unlock+0xe/0x10 [ 15.015048] [<ffffffffa02964b6>] ? send_packet+0x1c9/0x264 [imon] [ 15.015048] [<ffffffff8108b376>] ? lock_release_non_nested+0xdb/0x263 [ 15.015048] [<ffffffffa0296731>] ? imon_ir_change_protocol+0x126/0x15e [imon] [ 15.015048] [<ffffffffa024a334>] ? store_protocols+0x1c3/0x286 [rc_core] [ 15.015048] [<ffffffff81326e4e>] ? dev_attr_store+0x20/0x22 [ 15.015048] [<ffffffff8119d4cc>] ? sysfs_write_file+0x108/0x144 ... The original report that led to the investigation was the following: [ 1679.457305] INFO: task LCDd:8460 blocked for more than 120 seconds. [ 1679.457307] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [ 1679.457309] LCDd D ffff88010fcd89c8 0 8460 1 0x00000000 [ 1679.457312] ffff8800d5a03b48 0000000000000082 0000000000000000 ffff8800d5a03fd8 [ 1679.457314] 00000000012dcd30 fffffffffffffffd ffff8800d5a03fd8 ffff88010fcd86f0 [ 1679.457316] ffff8800d5a03fd8 ffff8800d5a03fd8 ffff88010fcd89d0 ffff8800d5a03fd8 [ 1679.457319] Call Trace: [ 1679.457324] [<ffffffff810ff1a5>] ? zone_statistics+0x75/0x90 [ 1679.457327] [<ffffffff810ea907>] ? get_page_from_freelist+0x3c7/0x820 [ 1679.457330] [<ffffffff813b0a49>] __mutex_lock_slowpath+0x139/0x320 [ 1679.457335] [<ffffffff813b0c41>] mutex_lock+0x11/0x30 [ 1679.457338] [<ffffffffa0d54216>] display_open+0x66/0x130 [imon] [ 1679.457345] [<ffffffffa01d06c0>] usb_open+0x180/0x310 [usbcore] [ 1679.457349] [<ffffffff81143b3b>] chrdev_open+0x1bb/0x2d0 [ 1679.457350] [<ffffffff8113d93d>] __dentry_open+0x10d/0x370 [ 1679.457352] [<ffffffff81143980>] ? chrdev_open+0x0/0x2d0 ... Bump the driver version here so its easier to tell if people have this locking fix or not, and also make locking during probe easier to follow. CC: [email protected] Reported-by: Benjamin Hodgetts <[email protected]> Signed-off-by: Jarod Wilson <[email protected]> Signed-off-by: Mauro Carvalho Chehab <[email protected]>
2011-04-29[media] rc: show RC_TYPE_OTHER in sysfsJarod Wilson1-0/+1
Signed-off-by: Jarod Wilson <[email protected]> Signed-off-by: Mauro Carvalho Chehab <[email protected]>
2011-04-29[media] ite-cir: modular build on ppc requires delay.h includeJarod Wilson1-0/+1
Signed-off-by: Jarod Wilson <[email protected]> Signed-off-by: Mauro Carvalho Chehab <[email protected]>
2011-04-29[media] mceusb: add Dell transceiver IDJarod Wilson1-0/+2
Add device ID for a Dell-branded, Philips device ID transceiver reported by an OpenELEC user on their forums. http://openelec.tv/forum/27-hardware-support/5622-adding-support-for-an-ir-receiver--dell-branded--#5622 Signed-off-by: Jarod Wilson <[email protected]> Signed-off-by: Mauro Carvalho Chehab <[email protected]>
2011-04-29ALSA: HDA: Fix automute for Gateway NV79David Henningsson1-0/+6
The PCI SSID is 1025:031c and the codec SSID is 1025:031d, so the driver mistakes this for a SKU value, but looking at the numbers, this is obviously wrong. Cc: [email protected] (2.6.38+) BugLink: http://bugs.launchpad.net/bugs/761861 Signed-off-by: David Henningsson <[email protected]> Signed-off-by: Takashi Iwai <[email protected]>
2011-04-29Merge branch 'kprobes' of git://git.linaro.org/people/nico/linux into fixesRussell King3-321/+462
2011-04-29hrtimer: Initialize CLOCK_ID to HRTIMER_BASE table staticallyThomas Gleixner1-5/+5
Sedat and Bruno reported RCU stalls which turned out to be caused by the following; sched_init() calls init_rt_bandwidth() which calls hrtimer_init() _BEFORE_ hrtimers_init() is called. While not entirely correct this worked because hrtimer_init() only accessed statically initialized data (hrtimer_bases.clock_base[CLOCK_MONOTONIC]) Commit e06383db9 (hrtimers: extend hrtimer base code to handle more then 2 clockids) added an indirection to the hrtimer_bases.clock_base lookup to avoid gap handling in the hot path. The table which is used for the translataion from CLOCK_ID to HRTIMER_BASE index is initialized at runtime in hrtimers_init(). So the early call of the scheduler code translates CLOCK_MONOTONIC to HRTIMER_BASE_REALTIME. Thus the rt_bandwith timer ends up on CLOCK_REALTIME. If the timer is armed and the wall clock time is set (e.g. ntpdate in the early boot process - which also gives the problem deterministic behaviour i.e. magic recovery after N hours), then the timer ends up with an expiry time far into the future. That breaks the RT throttler mechanism as rt runtime is accumulated and never cleared, so the rt throttler detects a false cpu hog condition and blocks all RT tasks until the timer finally expires. That in turn stalls the RCU thread of TINYRCU which leads to an huge amount of RCU callbacks piling up. Make the translation table statically initialized, so we are back to the status of <= 2.6.39. Reported-and-tested-by: Sedat Dilek <[email protected]> Reported-by: Bruno Prémont <[email protected]> Cc: John stultz <[email protected]> Cc: Mike Galbraith <[email protected]> Cc: Paul E. McKenney <[email protected]> Cc: Peter Zijlstra <[email protected]> Link: http://lkml.kernel.org/r/%3Calpine.LFD.2.02.1104282353140.3005%40ionos%3E Reviewed-by: Ingo Molnar <[email protected]> Signed-off-by: Thomas Gleixner <[email protected]>
2011-04-29[S390] irqstats: fix counting of pfault, dasd diag and virtio irqsHeiko Carstens3-3/+3
pfault, dasd diag and virtio all use the same external interrupt number. The respective interrupt handlers decide by the subcode if they are meant to handle the interrupt. Counting is currently done before looking at the subcode which means each handler counts an interrupt even if it is not handling it. Fix this by moving the kstat code after the code which looks at the subcode. Signed-off-by: Heiko Carstens <[email protected]> Signed-off-by: Martin Schwidefsky <[email protected]>
2011-04-29ALSA: hda: add beep quirk for Realtek 0x1043:831aDaniel Cordero1-0/+1
PC Beep was not being reported as enabled on my EeePC 901: SKU: enable_pcbeep=0x0 Signed-off-by: Daniel Cordero <[email protected]> Signed-off-by: Takashi Iwai <[email protected]>
2011-04-29cifs: sanitize length checking in coalesce_t2 (try #3)Jeff Layton1-6/+16
There are a couple of places in this code where these values can wrap or go negative, and that could potentially end up overflowing the buffer. Ensure that that doesn't happen. Do all of the length calculation and checks first, and only perform the memcpy after they pass. Also, increase some stack variables to 32 bits to ensure that they don't wrap without being detected. Finally, change the error codes to be a bit more descriptive of any problems detected. -EINVAL isn't very accurate. Cc: [email protected] Reported-and-Acked-by: David Howells <[email protected]> Signed-off-by: Jeff Layton <[email protected]> Signed-off-by: Steve French <[email protected]>
2011-04-29cifs: check for bytes_remaining going to zero in CIFS_SessSetupJeff Layton1-1/+3
It's possible that when we go to decode the string area in the SESSION_SETUP response, that bytes_remaining will be 0. Decrementing it at that point will mean that it can go "negative" and wrap. Check for a bytes_remaining value of 0, and don't try to decode the string area if that's the case. Cc: [email protected] Reported-and-Acked-by: David Howells <[email protected]> Signed-off-by: Jeff Layton <[email protected]> Signed-off-by: Steve French <[email protected]>
2011-04-29cifs: change bleft in decode_unicode_ssetup back to signed typeJeff Layton1-14/+1
The buffer length checks in this function depend on this value being a signed data type, but 690c522fa converted it to an unsigned type. Also, eliminate a problem with the null termination check in the same function. cifs_strndup_from_ucs handles that situation correctly already, and the existing check could potentially lead to a buffer overrun since it increments bleft without checking to see whether it falls off the end of the buffer. Cc: [email protected] Reported-and-Acked-by: David Howells <[email protected]> Signed-off-by: Jeff Layton <[email protected]> Signed-off-by: Steve French <[email protected]>
2011-04-28ARM: kprobes: Tidy-up kprobes-decode.cJon Medhurst1-108/+23
- Remove coding standard violations reported by checkpatch.pl - Delete comment about handling of conditional branches which is no longer true. - Delete comment at end of file which lists all ARM instructions. This duplicates data available in the ARM ARM and seems like an unnecessary maintenance burden to keep this up to date and accurate. Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Add emulation of hint instructions like NOP and WFIJon Medhurst1-0/+24
Being able to probe NOP instructions is useful for hard-coding probeable locations and is used by the kprobes test code. Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Add emulation of SBFX, UBFX, BFI and BFC instructionsJon Medhurst1-0/+42
These bit field manipulation instructions occur several thousand times in an ARMv7 kernel. Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Add emulation of MOVW and MOVT instructionsJon Medhurst1-2/+28
The MOVW and MOVT instructions account for approximately 7% of all instructions in a ARMv7 kernel as GCC uses them instead of a literal pool. Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Reject probing of undefined data processing instructionsJon Medhurst1-14/+17
The instruction decoding in space_cccc_000x needs to reject probing of instructions with undefined patterns as they may in future become defined and then emulated faultily - as has already happened with the SMC instruction. This fix is achieved by testing for the instruction patterns we want to probe and making the the default fall-through paths reject probes. This also allows us to remove some explicit tests for instructions that we wish to reject, as that is now the default action. Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Remove redundant code in space_1111Jon Medhurst1-9/+5
The tests to explicitly reject probing CPS, RFE and SRS instructions are redundant as the default case is now to reject undecoded patterns. Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Fix emulation of PLD instructionsJon Medhurst1-13/+8
The PLD instructions wasn't being decoded correctly and the emulation code wasn't adjusting PC correctly. As the PLD instruction is only a performance hint we emulate it as a simple nop, and we can broaden the instruction decoding to take into account newer PLI and PLDW instructions. Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Reject probing of SETEND instructionsJon Medhurst1-5/+0
The emulation of SETEND was broken as it changed the endianess for the running kprobes handling code. Rather than adding a new simulation routine to fix this we'll just reject probing of SETEND as these should be very rare in the kernel. Note, the function emulate_none is now unused but it is left in the source code as future patches will use it. Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Consolidate stub decoding functionsJon Medhurst1-31/+9
Following the change to remove support for coprocessor instructions we are left with three stub functions which can be consolidated. Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Reject probing of all coprocessor instructionsJon Medhurst1-102/+11
The kernel doesn't currently support VFP or Neon code, and probing of code with CP15 operations is fraught with bad consequences. Therefore we don't need the ability to probe coprocessor instructions and the code to support this can be removed. The removed code also had at least two bugs: - MRC into R15 should set CPSR not trash PC - LDC and STC which use PC as base register needed the address offset by 8 Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Fix emulation of USAD8 instructionsJon Medhurst1-6/+4
The USAD8 instruction wasn't being explicitly decoded leading to the incorrect emulation routine being called. It can be correctly decoded in the same way as the signed multiply instructions so we move the decoding there. Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Fix emulation of SMUAD, SMUSD and SMMUL instructionsJon Medhurst1-7/+15
The signed multiply instructions were being decoded incorrectly. Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Fix emulation of SXTB16, SXTB, SXTH, UXTB16, UXTB and UXTH ↵Jon Medhurst1-2/+12
instructions These sign extension instructions are encoded as extend-and-add instructions where the register to add is specified as r15. The decoding routines weren't checking for this and were using the incorrect emulation code, giving incorrect results. Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Reject probing of undefined media instructionsJon Medhurst1-1/+35
The instructions space for media instructions contains some undefined patterns. We need to reject probing of these because they may in future become defined and the kprobes code may then emulate them faultily. Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Add emulation of RBIT instructionJon Medhurst1-1/+2
The v6T2 RBIT instruction was accidentally being emulated correctly, this patch adds correct decoding for the instruction. Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Reject probing of LDRB instructions which load PCJon Medhurst1-0/+4
These instructions are specified as UNPREDICTABLE. Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Fix emulation of LDRD and STRD instructionsJon Medhurst1-6/+6
The decoding of these instructions got the register indexed and immediate indexed forms the wrong way around, causing incorrect emulation. Instructions like "LDRD Rx, [Rx]" were corrupting Rx because the base register writeback was being performed unconditionally, overwriting the value just loaded from memory. The fix is to only writeback the base register when that form of the instruction is used. Note, now that we reject probing writeback with PC the emulation code doesn't need the check rn!=15. Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Reject probing of LDR/STR instructions which update PC ↵Jon Medhurst1-0/+17
unpredictably Using PC as an base register with writeback is UNPREDICTABLE, as is non word-sized loads or stores of PC. (We only really care about preventing loads to PC but it keeps the code simpler if we also exclude stores.) Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Fix emulation of LDRH, STRH, LDRSB and LDRSH instructionsJon Medhurst1-2/+3
The decoding of these instructions got the register indexed and immediate indexed forms the wrong way around, causing incorrect emulation. Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Reject probing of STREX and LDREX instructionsJon Medhurst1-5/+22
The emulation code for STREX and LDREX instructions is faulty, however, rather than attempting to fix this we reject probes of these instructions. We do this because they can never succeed in gaining exclusive access as the exception framework clears the exclusivity monitor when a probes breakpoint is hit. (This is a general problem when probing all instructions executing between a LDREX and its corresponding STREX and can lead to infinite retry loops.) Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Reject probing of undefined multiply instructionsJon Medhurst1-3/+8
The instructions space for 'Multiply and multiply-accumulate' instructions contains some undefined patterns. We need to reject probing of these because they may in future become defined and the kprobes code may then emulate them faultily. This has already happened with the new MLS instruction which this patch also adds correct decoding for as well as tightening up other decoding tests. (Before this patch the wrong emulation routine was being called for MLS though it still produced correct results.) Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Fix error in commentJon Medhurst1-1/+1
Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Reject probing of instructions which write to PC unpredictably.Jon Medhurst1-0/+28
Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Fix emulation of MRS instructionJon Medhurst1-11/+12
The MRS instruction should set mode and interrupt bits in the read value so it is simpler to use a new simulation routine (simulate_mrs) rather than some modified emulation. prep_emulate_rd12 is now unused and removed. Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Reject probing MRS instructions which read SPSRJon Medhurst1-5/+7
We need to reject probing of instructions which read SPSR because we can't handle this as the value in SPSR is lost when the exception handler for the probe breakpoint first runs. This patch also fixes the bitmask for MRS instructions decoding to include checking bits 5-7. Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Fix emulation of Data-processing (immediate) instructionsJon Medhurst1-1/+1
Emulation of instructions like "ADD rd, rn, #<const>" would result in a corrupted value for rd. Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Fix emulation of CMP, CMN, TST and TEQ instructions.Jon Medhurst1-2/+53
Probing these instructions was corrupting R0 because the emulation code didn't account for the fact that they don't write a result to a register. Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Remove redundant condition checks from simulation routinesJon Medhurst1-27/+3
Now we have the framework code handling conditionally executed instructions we can remove redundant checks in individual simulation routines. Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28ARM: kprobes: Fix probing of conditionally executed instructionsJon Medhurst3-1/+96
When a kprobe is placed onto conditionally executed ARM instructions, many of the emulation routines used to single step them produce corrupt register results. Rather than fix all of these cases we modify the framework which calls them to test the relevant condition flags and, if the test fails, skip calling the emulation code. Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>
2011-04-28kprobes/arm: Fix ldrd/strd emulationViktor Rosendahl1-5/+15
Currently emulate_ldrd and emulate_strd don't even have the adjustment of the PC value, so in case of Rn == PC, it will not update the PC incorrectly but instead load/store from the wrong address. Let's add both the adjustment of the PC value and the check for PC == PC. Signed-off-by: Viktor Rosendahl <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]>