forked from rpms/kernel
		
	Linux v3.9
This commit is contained in:
		
							parent
							
								
									6c6f27531f
								
							
						
					
					
						commit
						e1d539a21b
					
				| @ -1,35 +0,0 @@ | ||||
| From 4b367720588ea97a32dc6393ac8975d6111ba72b Mon Sep 17 00:00:00 2001 | ||||
| From: Josh Boyer <jwboyer@redhat.com> | ||||
| Date: Wed, 24 Apr 2013 10:30:02 -0400 | ||||
| Subject: [PATCH] efi: Check EFI revision in setup_efi_vars | ||||
| 
 | ||||
| We need to check the runtime sys_table for the EFI version the firmware | ||||
| specifies instead of just checking for a NULL QueryVariableInfo.  Older | ||||
| implementations of EFI don't have QueryVariableInfo but the runtime is | ||||
| a smaller structure, so the pointer to it may be pointing off into garbage. | ||||
| 
 | ||||
| This is apparently the case with several Apple firmwares that support EFI | ||||
| 1.10, and the current check causes them to no longer boot.  Fix based on | ||||
| a suggestion from Matthew Garrett. | ||||
| 
 | ||||
| Signed-off-by: Josh Boyer <jwboyer@redhat.com> | ||||
| ---
 | ||||
|  arch/x86/boot/compressed/eboot.c | 2 +- | ||||
|  1 file changed, 1 insertion(+), 1 deletion(-) | ||||
| 
 | ||||
| diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c
 | ||||
| index 8615f75..4060c8d 100644
 | ||||
| --- a/arch/x86/boot/compressed/eboot.c
 | ||||
| +++ b/arch/x86/boot/compressed/eboot.c
 | ||||
| @@ -258,7 +258,7 @@ static efi_status_t setup_efi_vars(struct boot_params *params)
 | ||||
|  	u64 store_size, remaining_size, var_size; | ||||
|  	efi_status_t status; | ||||
|   | ||||
| -	if (!sys_table->runtime->query_variable_info)
 | ||||
| +	if (sys_table->runtime->hdr.revision < EFI_2_00_SYSTEM_TABLE_REVISION)
 | ||||
|  		return EFI_UNSUPPORTED; | ||||
|   | ||||
|  	data = (struct setup_data *)(unsigned long)params->hdr.setup_data; | ||||
| -- 
 | ||||
| 1.8.1.4 | ||||
| 
 | ||||
| @ -1,61 +0,0 @@ | ||||
| The following RCU splat indicates lack of RCU protection: | ||||
| 
 | ||||
| [  953.267649] =============================== | ||||
| [  953.267652] [ INFO: suspicious RCU usage. ] | ||||
| [  953.267657] 3.9.0-0.rc6.git2.4.fc19.ppc64p7 #1 Not tainted | ||||
| [  953.267661] ------------------------------- | ||||
| [  953.267664] include/linux/cgroup.h:534 suspicious rcu_dereference_check() usage! | ||||
| [  953.267669] | ||||
| [  953.267669] other info that might help us debug this: | ||||
| [  953.267669] | ||||
| [  953.267675] | ||||
| [  953.267675] rcu_scheduler_active = 1, debug_locks = 0 | ||||
| [  953.267680] 1 lock held by glxgears/1289: | ||||
| [  953.267683]  #0:  (&sig->cred_guard_mutex){+.+.+.}, at: [<c00000000027f884>] .prepare_bprm_creds+0x34/0xa0 | ||||
| [  953.267700] | ||||
| [  953.267700] stack backtrace: | ||||
| [  953.267704] Call Trace: | ||||
| [  953.267709] [c0000001f0d1b6e0] [c000000000016e30] .show_stack+0x130/0x200 (unreliable) | ||||
| [  953.267717] [c0000001f0d1b7b0] [c0000000001267f8] .lockdep_rcu_suspicious+0x138/0x180 | ||||
| [  953.267724] [c0000001f0d1b840] [c0000000001d43a4] .perf_event_comm+0x4c4/0x690 | ||||
| [  953.267731] [c0000001f0d1b950] [c00000000027f6e4] .set_task_comm+0x84/0x1f0 | ||||
| [  953.267737] [c0000001f0d1b9f0] [c000000000280414] .setup_new_exec+0x94/0x220 | ||||
| [  953.267744] [c0000001f0d1ba70] [c0000000002f665c] .load_elf_binary+0x58c/0x19b0 | ||||
| [  953.267751] [c0000001f0d1bbc0] [c00000000027e724] .search_binary_handler+0x254/0x680 | ||||
| [  953.267758] [c0000001f0d1bca0] [c0000000002800dc] .do_execve_common.isra.17+0x76c/0x860 | ||||
| [  953.267764] [c0000001f0d1bd90] [c000000000280698] .SyS_execve+0x58/0x90 | ||||
| [  953.267771] [c0000001f0d1be30] [c000000000009e60] syscall_exit+0x0/0x98 | ||||
| 
 | ||||
| This commit therefore adds the required RCU read-side critical section to | ||||
| perf_event_comm(). | ||||
| 
 | ||||
| Reported-by: Adam Jackson <ajax@redhat.com> | ||||
| Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> | ||||
| Tested-by: Gustavo Luiz Duarte <gusld@br.ibm.com> | ||||
| 
 | ||||
| diff --git a/kernel/events/core.c b/kernel/events/core.c
 | ||||
| index b0cd865..8db9551 100644
 | ||||
| --- a/kernel/events/core.c
 | ||||
| +++ b/kernel/events/core.c
 | ||||
| @@ -4593,6 +4593,7 @@ void perf_event_comm(struct task_struct *task)
 | ||||
|  	struct perf_event_context *ctx; | ||||
|  	int ctxn; | ||||
|   | ||||
| +	rcu_read_lock();
 | ||||
|  	for_each_task_context_nr(ctxn) { | ||||
|  		ctx = task->perf_event_ctxp[ctxn]; | ||||
|  		if (!ctx) | ||||
| @@ -4600,6 +4601,7 @@ void perf_event_comm(struct task_struct *task)
 | ||||
|   | ||||
|  		perf_event_enable_on_exec(ctx); | ||||
|  	} | ||||
| +	rcu_read_unlock();
 | ||||
|   | ||||
|  	if (!atomic_read(&nr_comm_events)) | ||||
|  		return; | ||||
| 
 | ||||
| --
 | ||||
| To unsubscribe from this list: send the line "unsubscribe linux-kernel" in | ||||
| the body of a message to majordomo@vger.kernel.org | ||||
| More majordomo info at  http://vger.kernel.org/majordomo-info.html | ||||
| Please read the FAQ at  http://www.tux.org/lkml/ | ||||
							
								
								
									
										19
									
								
								kernel.spec
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								kernel.spec
									
									
									
									
									
								
							| @ -6,7 +6,7 @@ Summary: The Linux kernel | ||||
| # For a stable, released kernel, released_kernel should be 1. For rawhide | ||||
| # and/or a kernel built from an rc or git snapshot, released_kernel should | ||||
| # be 0. | ||||
| %global released_kernel 0 | ||||
| %global released_kernel 1 | ||||
| 
 | ||||
| # Sign modules on x86.  Make sure the config files match this setting if more | ||||
| # architectures are added. | ||||
| @ -62,13 +62,13 @@ Summary: The Linux kernel | ||||
| # For non-released -rc kernels, this will be appended after the rcX and | ||||
| # gitX tags, so a 3 here would become part of release "0.rcX.gitX.3" | ||||
| # | ||||
| %global baserelease 2 | ||||
| %global baserelease 1 | ||||
| %global fedora_build %{baserelease} | ||||
| 
 | ||||
| # base_sublevel is the kernel version we're starting with and patching | ||||
| # on top of -- for example, 3.1-rc7-git1 starts with a 3.0 base, | ||||
| # which yields a base_sublevel of 0. | ||||
| %define base_sublevel 8 | ||||
| %define base_sublevel 9 | ||||
| 
 | ||||
| ## If this is a released kernel ## | ||||
| %if 0%{?released_kernel} | ||||
| @ -753,11 +753,6 @@ Patch25010: wireless-regulatory-fix-channel-disabling-race-condition.patch | ||||
| #rhbz 951241 | ||||
| Patch25011: iwlwifi-fix-freeing-uninitialized-pointer.patch | ||||
| 
 | ||||
| Patch25012: events-protect-access-via-task-subsys-state-check.patch | ||||
| 
 | ||||
| #rhbz 953447 | ||||
| Patch25013: efi-Check-EFI-revision-in-setup_efi_vars.patch | ||||
| 
 | ||||
| Patch25014: blkcg-fix-scheduling-while-atomic-in-blk_queue_bypass_start.patch | ||||
| 
 | ||||
| # END OF PATCH DEFINITIONS | ||||
| @ -1462,11 +1457,6 @@ ApplyPatch wireless-regulatory-fix-channel-disabling-race-condition.patch | ||||
| #rhbz 951241 | ||||
| ApplyPatch iwlwifi-fix-freeing-uninitialized-pointer.patch | ||||
| 
 | ||||
| ApplyPatch events-protect-access-via-task-subsys-state-check.patch | ||||
| 
 | ||||
| #rhbz 953447 | ||||
| ApplyPatch efi-Check-EFI-revision-in-setup_efi_vars.patch | ||||
| 
 | ||||
| ApplyPatch blkcg-fix-scheduling-while-atomic-in-blk_queue_bypass_start.patch | ||||
| 
 | ||||
| # END OF PATCH APPLICATIONS | ||||
| @ -2302,6 +2292,9 @@ fi | ||||
| #                 ||----w | | ||||
| #                 ||     || | ||||
| %changelog | ||||
| * Mon Apr 29 2013 Josh Boyer <jwboyer@redhat.com> | ||||
| - Linux v3.9 | ||||
| 
 | ||||
| * Fri Apr 26 2013 Josh Boyer <jwboyer@redhat.com> | ||||
| - Add patch to prevent scheduling while atomic error in blkcg | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user