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 | # 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 | # and/or a kernel built from an rc or git snapshot, released_kernel should | ||||||
| # be 0. | # be 0. | ||||||
| %global released_kernel 0 | %global released_kernel 1 | ||||||
| 
 | 
 | ||||||
| # Sign modules on x86.  Make sure the config files match this setting if more | # Sign modules on x86.  Make sure the config files match this setting if more | ||||||
| # architectures are added. | # architectures are added. | ||||||
| @ -62,13 +62,13 @@ Summary: The Linux kernel | |||||||
| # For non-released -rc kernels, this will be appended after the rcX and | # 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" | # 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} | %global fedora_build %{baserelease} | ||||||
| 
 | 
 | ||||||
| # base_sublevel is the kernel version we're starting with and patching | # 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, | # on top of -- for example, 3.1-rc7-git1 starts with a 3.0 base, | ||||||
| # which yields a base_sublevel of 0. | # which yields a base_sublevel of 0. | ||||||
| %define base_sublevel 8 | %define base_sublevel 9 | ||||||
| 
 | 
 | ||||||
| ## If this is a released kernel ## | ## If this is a released kernel ## | ||||||
| %if 0%{?released_kernel} | %if 0%{?released_kernel} | ||||||
| @ -753,11 +753,6 @@ Patch25010: wireless-regulatory-fix-channel-disabling-race-condition.patch | |||||||
| #rhbz 951241 | #rhbz 951241 | ||||||
| Patch25011: iwlwifi-fix-freeing-uninitialized-pointer.patch | 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 | Patch25014: blkcg-fix-scheduling-while-atomic-in-blk_queue_bypass_start.patch | ||||||
| 
 | 
 | ||||||
| # END OF PATCH DEFINITIONS | # END OF PATCH DEFINITIONS | ||||||
| @ -1462,11 +1457,6 @@ ApplyPatch wireless-regulatory-fix-channel-disabling-race-condition.patch | |||||||
| #rhbz 951241 | #rhbz 951241 | ||||||
| ApplyPatch iwlwifi-fix-freeing-uninitialized-pointer.patch | 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 | ApplyPatch blkcg-fix-scheduling-while-atomic-in-blk_queue_bypass_start.patch | ||||||
| 
 | 
 | ||||||
| # END OF PATCH APPLICATIONS | # END OF PATCH APPLICATIONS | ||||||
| @ -2302,6 +2292,9 @@ fi | |||||||
| #                 ||----w | | #                 ||----w | | ||||||
| #                 ||     || | #                 ||     || | ||||||
| %changelog | %changelog | ||||||
|  | * Mon Apr 29 2013 Josh Boyer <jwboyer@redhat.com> | ||||||
|  | - Linux v3.9 | ||||||
|  | 
 | ||||||
| * Fri Apr 26 2013 Josh Boyer <jwboyer@redhat.com> | * Fri Apr 26 2013 Josh Boyer <jwboyer@redhat.com> | ||||||
| - Add patch to prevent scheduling while atomic error in blkcg | - Add patch to prevent scheduling while atomic error in blkcg | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user