···10071007 if (likely(r->access(vcpu, params, r))) {10081008 /* Skip instruction, since it was emulated */10091009 kvm_skip_instr(vcpu, kvm_vcpu_trap_il_is32bit(vcpu));10101010+ /* Handled */10111011+ return 0;10101012 }10111011-10121012- /* Handled */10131013- return 0;10141013 }1015101410161015 /* Not handled */···10421043}1043104410441045/**10451045- * kvm_handle_cp_64 -- handles a mrrc/mcrr trap on a guest CP15 access10461046+ * kvm_handle_cp_64 -- handles a mrrc/mcrr trap on a guest CP14/CP15 access10461047 * @vcpu: The VCPU pointer10471048 * @run: The kvm_run struct10481049 */···10941095}1095109610961097/**10971097- * kvm_handle_cp15_32 -- handles a mrc/mcr trap on a guest CP15 access10981098+ * kvm_handle_cp_32 -- handles a mrc/mcr trap on a guest CP14/CP15 access10981099 * @vcpu: The VCPU pointer10991100 * @run: The kvm_run struct11001101 */
···18221822 */18231823static int18241824check_prev_add(struct task_struct *curr, struct held_lock *prev,18251825- struct held_lock *next, int distance, int trylock_loop)18251825+ struct held_lock *next, int distance, int *stack_saved)18261826{18271827 struct lock_list *entry;18281828 int ret;···18831883 }18841884 }1885188518861886- if (!trylock_loop && !save_trace(&trace))18871887- return 0;18861886+ if (!*stack_saved) {18871887+ if (!save_trace(&trace))18881888+ return 0;18891889+ *stack_saved = 1;18901890+ }1888189118891892 /*18901893 * Ok, all validations passed, add the new lock···19101907 * Debugging printouts:19111908 */19121909 if (verbose(hlock_class(prev)) || verbose(hlock_class(next))) {19101910+ /* We drop graph lock, so another thread can overwrite trace. */19111911+ *stack_saved = 0;19131912 graph_unlock();19141913 printk("\n new dependency: ");19151914 print_lock_name(hlock_class(prev));···19341929check_prevs_add(struct task_struct *curr, struct held_lock *next)19351930{19361931 int depth = curr->lockdep_depth;19371937- int trylock_loop = 0;19321932+ int stack_saved = 0;19381933 struct held_lock *hlock;1939193419401935 /*···19611956 */19621957 if (hlock->read != 2 && hlock->check) {19631958 if (!check_prev_add(curr, hlock, next,19641964- distance, trylock_loop))19591959+ distance, &stack_saved))19651960 return 0;19661961 /*19671962 * Stop after the first non-trylock entry,···19841979 if (curr->held_locks[depth].irq_context !=19851980 curr->held_locks[depth-1].irq_context)19861981 break;19871987- trylock_loop = 1;19881982 }19891983 return 1;19901984out_bug:
+3-3
lib/scatterlist.c
···598598 *599599 * Description:600600 * Stops mapping iterator @miter. @miter should have been started601601- * started using sg_miter_start(). A stopped iteration can be602602- * resumed by calling sg_miter_next() on it. This is useful when603603- * resources (kmap) need to be released during iteration.601601+ * using sg_miter_start(). A stopped iteration can be resumed by602602+ * calling sg_miter_next() on it. This is useful when resources (kmap)603603+ * need to be released during iteration.604604 *605605 * Context:606606 * Preemption disabled if the SG_MITER_ATOMIC is set. Don't care