aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/cpu/bugs.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kernel/cpu/bugs.c')
-rw-r--r--arch/x86/kernel/cpu/bugs.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
index 01874d54f4fd..2da82eff0eb4 100644
--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -798,15 +798,25 @@ static int ssb_prctl_set(struct task_struct *task, unsigned long ctrl)
798 if (task_spec_ssb_force_disable(task)) 798 if (task_spec_ssb_force_disable(task))
799 return -EPERM; 799 return -EPERM;
800 task_clear_spec_ssb_disable(task); 800 task_clear_spec_ssb_disable(task);
801 task_clear_spec_ssb_noexec(task);
801 task_update_spec_tif(task); 802 task_update_spec_tif(task);
802 break; 803 break;
803 case PR_SPEC_DISABLE: 804 case PR_SPEC_DISABLE:
804 task_set_spec_ssb_disable(task); 805 task_set_spec_ssb_disable(task);
806 task_clear_spec_ssb_noexec(task);
805 task_update_spec_tif(task); 807 task_update_spec_tif(task);
806 break; 808 break;
807 case PR_SPEC_FORCE_DISABLE: 809 case PR_SPEC_FORCE_DISABLE:
808 task_set_spec_ssb_disable(task); 810 task_set_spec_ssb_disable(task);
809 task_set_spec_ssb_force_disable(task); 811 task_set_spec_ssb_force_disable(task);
812 task_clear_spec_ssb_noexec(task);
813 task_update_spec_tif(task);
814 break;
815 case PR_SPEC_DISABLE_NOEXEC:
816 if (task_spec_ssb_force_disable(task))
817 return -EPERM;
818 task_set_spec_ssb_disable(task);
819 task_set_spec_ssb_noexec(task);
810 task_update_spec_tif(task); 820 task_update_spec_tif(task);
811 break; 821 break;
812 default: 822 default:
@@ -885,6 +895,8 @@ static int ssb_prctl_get(struct task_struct *task)
885 case SPEC_STORE_BYPASS_PRCTL: 895 case SPEC_STORE_BYPASS_PRCTL:
886 if (task_spec_ssb_force_disable(task)) 896 if (task_spec_ssb_force_disable(task))
887 return PR_SPEC_PRCTL | PR_SPEC_FORCE_DISABLE; 897 return PR_SPEC_PRCTL | PR_SPEC_FORCE_DISABLE;
898 if (task_spec_ssb_noexec(task))
899 return PR_SPEC_PRCTL | PR_SPEC_DISABLE_NOEXEC;
888 if (task_spec_ssb_disable(task)) 900 if (task_spec_ssb_disable(task))
889 return PR_SPEC_PRCTL | PR_SPEC_DISABLE; 901 return PR_SPEC_PRCTL | PR_SPEC_DISABLE;
890 return PR_SPEC_PRCTL | PR_SPEC_ENABLE; 902 return PR_SPEC_PRCTL | PR_SPEC_ENABLE;