IBM Support

MF65182 - LIC Spectre and Meltdown speculation barrier functions

PTF ( Program Temporary Fixes ) Cover letter


Order this fix

Abstract

LIC Spectre and Meltdown speculation barrier functions


Pre/Co-Requisite PTF / Fix List

REQ  LICENSED      PTF/FIX  LEVEL

TYPE PROGRAM  REL  NUMBER   MIN/MAX  OPTION
---- -------- ---  -------  -------  ------
PRE  5770999  710  MF65181   00/00    0000



NOTICE:
-------
Application of this PTF may disable or render ineffective programs that
use system memory addresses not generated by the IBM translator,
including programs that circumvent control technology designed to limit
interactive capacity to purchased levels.  This PTF may be a prerequisite
for future PTFs.  By applying this PTF you authorize and agree to the
foregoing.

This PTF is subject to the terms of the 'IBM License Agreement for Machine
Code', the terms of which were provided in a printed document that was
delivered with the machine.

SUBJECT TO ANY WARRANTIES WHICH CAN NOT BE EXCLUDED OR EXCEPT AS EXPLICITLY
AGREED TO IN THE APPLICABLE LICENSE AGREEMENT OR AN APPLICABLE SUPPORT
AGREEMENT, IBM MAKES NO WARRANTIES OR CONDITIONS EITHER EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OR CONDITIONS OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON INFRINGEMENT,
REGARDING THE PTF.





APAR Error Description / Circumvention

-----------------------------------------------
IBM has released this PTF in response to CVE-2017-5753,
CVE-2017-5715, CVE-2017-5754, and CVE-2018-3639.

CORRECTION FOR APAR MA47096 :
-----------------------------
The first parameter of the SYNCSTG machine interface (MI)
instruction will support new values 3 through 6.  If you do not
control the source code for your programs, there is nothing
additional you need to do.  If you do control the source code
for your programs and if you choose to place invocations of this
MI instruction in your program's source code, they will provide
the functions described below.  The new values of this
instruction can only be invoked from an Integrated Language
Environment (ILE) program or service program.

Use of value 3, on versions of the hardware containing the
latest security patches, can be used to insert a machine
speculation barrier at the point of the SYNCSTG instruction.
Speculative execution along the logical flow that includes the
SYNCSTG instruction is interrupted at the barrier.  Speculation
resumes following this instruction if it is non-speculatively
executed.  For non-speculative execution of this instruction,
there are no functional effects.

Use of actions 4-6 help provide a barrier for application
switching within the same thread of execution.  For this
barrier, the target application model is one where the program
alternates between trusted "runtime" and untrusted "sandbox"
execution.  The runtime helps to provide the isolation between
one or more sandbox environments to help mitigate the ability of
a program in one sandbox from having access to unauthorized data
from another sandbox.

Actions 4-6 help define a barrier for transitions, helping to
mitigate the unauthorized access of data between the trusted
runtime and untrusted sandboxes.  Transition from sandbox to
runtime is an entry (action 4); transition from runtime to
sandbox is an exit (action 5).  Action 6 can be used as a
barrier in either direction (entry or exit).  Although not as
efficient as action 4 or 5, it can be used if it is not
reasonable to determine whether a transition is an entry or an
exit.

If the source for a program uses the SYNCSTG MI instruction with
any of these new values and this PTF is not applied, trying to
create or convert the module will fail with MSGMCH4245, reason
code 3, or MSGMCH4227, reason code 7.  Also, if the PTF is
applied but the target release (TGTRLS option on the compile
command) is earlier than V7R1M0, the compilation will fail with
MSGMCH4230.

If a program that uses the SYNCSTG MI instruction with values 3
through 6 is moved to a different system, the target system must
include the latest Spectre/Meltdown PTFs and firmware patches.
Failure to do so may result in one of the following:

1. Failure to provide any machine speculation protection if
value 3 is used.

2. Failure to provide an application barrier if values 4 through
6 are used.

3. MSGMCH6801, type=1, may be generated when the program runs.

4. MSGMCH4245, reason code 3, or MSGMCH4227, reason code 7, may
be generated when the program is created or converted.

5. MSGCPF3888 may be generated if a program is restored and
program conversion is needed.

See the IBM i Security Bulletin for a list of all previously
released PTFs and firmware patches needed to mitigate
Spectre/Meltdown vulnerabilities:

www.ibm.com/support/docview.wss?uid=nas8N1022433

CIRCUMVENTION FOR APAR MA47096 :
--------------------------------
None.


Activation Instructions


None.




Special Instructions


********************************************************************
THE FOLLOWING ARE SUPERSEDED SPECIAL INSTRUCTIONS. IF THE SUPERSEDED
PTF HAS ALREADY BEEN APPLIED AND ITS SPECIAL INSTRUCTION FOLLOWED,
IT IS NOT NECESSARY TO FOLLOW THAT SPECIAL INSTRUCTION AGAIN.
********************************************************************

SPECIAL INSTRUCTIONS FOR SUPERSEDED PTF MF58856 :
=================================================

If you have not experienced this problem, nothing needs to
be done.  If you have experienced this problem, you need to
do the following to re-create each affected program:

Use the DSPPGM or DSPSRVPGM command to see whether observable
information exists.

If the program has all observable information, then use the
CHGPGM or CHGSRVPGM command with keyword FRCCRT(*YES) to force
program re-creation.

If creation data has been made unobservable, you can
re-create the programs using other methods. One way is to
restore the programs, either after setting the QFRCCVNRST
system value to 7 or by specifying the FRCOBJCVN(*YES *ALL)
parameter on the restore command (RST, RSTOBJ or RSTLIB).
Another way to re-create programs without observable
creation data is to recompile the program source code, using
your choice of optimization level.

SPECIAL INSTRUCTIONS FOR SUPERSEDED PTF MF57247 :
=================================================

If you have not experienced this problem, nothing needs to be done.

If you have experienced this problem, you need to find the affected
objects.  These are *MODULE, *PGM, or *SRVPGM objects that contain
ILE RPG procedures that return zoned decimal values.

Then do the following to re-create the affected objects:

Use the DSPMOD, DSPPGM, or DSPSRVPGM command to see whether
observable information exists in the object.

If the object has all observable information, then use the
CHGMOD, CHGPGM, or CHGSRVPGM command with keyword FRCCRT(*YES) to
force object re-creation.

If creation data has been made unobservable, you can
re-create the objects using other methods. One way is to
restore the objects, either after setting the QFRCCVNRST
system value to 7 or by specifying the FRCOBJCVN(*YES *ALL)
parameter on the restore command (RST, RSTOBJ or RSTLIB).

Another way to re-create objects is to recompile the source code,
using your choice of optimization level.

SPECIAL INSTRUCTIONS FOR SUPERSEDED PTF MF53305 :
=================================================

If you have not experienced this problem, nothing needs to be done.

If you have experienced this problem, you need to do the following to
re-create each affected program, service program, and module:

- Use the DSPPGM, DSPSRVPGM, or DSPMOD command to see whether
observable information exists for the object.

- If the object has all observable information, then use the CHGPGM,
CHGSRVPGM, or CHGMOD command with keyword FRCCRT(*YES) to force object
re-creation.

- If creation data has been made unobservable, you can re-create the
objects using other methods. One way is to restore the objects, either
after setting the QFRCCVNRST system value to 7 or by specifying the
FRCOBJCVN(*YES *ALL) parameter on the restore command (RST, RSTOBJ or
RSTLIB). Another way to re-create objects without observable creation
data is to recompile the program source code, using your choice of
optimization level.

SPECIAL INSTRUCTIONS FOR SUPERSEDED PTF MF50509 :
=================================================

If you have not experienced this problem, nothing needs to be done.

If you have experienced this problem, you need to re-create the
programs that generate incorrect output. If creation data has not been
made unobservable in your programs, you can force program re-creation
using the CHGPGM or CHGSRVPGM commands by specifying the FRCCRT(*YES)
parameter. If creation data has been made unobservable, you can
re-create the programs using other methods. One way is to restore the
programs, either after setting the QFRCCVNRST system value to 7 or by
specifying the FRCOBJCVN(*YES *ALL) parameter on the restore command
(RST, RSTOBJ or RSTLIB). Another way to re-create programs without
observable creation data is to recompile the program source code, using
your choice of optimization level.

SPECIAL INSTRUCTIONS FOR SUPERSEDED PTF MF48189 :
=================================================

If you have not experienced this problem, nothing needs to be done.

If you have experienced this problem, you need to convert the module,
program, and/or service program objects that previously failed to
convert.  The STROBJCVN command can be used to convert your objects.


Default Instructions

THIS IS A DELAYED PTF TO BE APPLIED AT IPL TIME.



Supersedes

PTF/FIX NO(S).  APAR TITLE LINE
--------------  ------------------------------------------------------------
   MF48131      LIC-OTHER-INCORROUT Change BLA addresses for MI DFP quantize
   MF61324      OSP-OTHER-UNPRED MSGMCH3203 during CHGPGM PRFDTA(*APYALL)
   MF60464      OSP-UNPRED preventive fixes for optimizing translator
   MF58856      OSP-OTHER-UNPRED incorrect pointer arithmetic in optimized c
   MF58636      LIC-OTHER-SRCB6005121-LOOP SYSTEM TERMINATED WHILE RUNNING C
   MF58514      OSP-OTHER-F/VOXERROR-RC27-MSGMCH4227 after upgrade from V5R4
   MF57579      OSP-OTHER-F/VVLDUMP-T/QBNCRTMD-MSGMCH3203
   MF57247      OSP-OTHER-INCORROUT zoned values not returned to CL CALLPRC
   MF57217      OSP-OTHER-F/VOXCA-MSGMCH3203 module creation fails with VLOG
   MF56489      OSP-OTHER-F/VOXERROR-MSGMCH4234 during creation or conversio
   MF55670      OSP-OTHER-UNPRED fixes for Optimizing Translator
   MF53305      LIC-OTHER-INCORROUT incorrect variable value in optimized pg
   MF52545      LIC-MSGMCH4219 VL11012A13 PROGRAM CREATION FAILS
   MF50509      LIC-OTHER-MSGMCH3601 Teraspace storage model program fails r
   MF50398      LIC-PERFM Performance improvements for optimizing translator
   MF48881      LIC-OTHER-INCORROUT Incorrect code generated for blocked ins
   MF48501      LIC-OTHER-INCORROUT Conversions to/from zoned and packed can
   MF48197      OSP-OTHER-F/VOXERROR-MSGMCH4216 CHGMOD FAILING WITH MCH4216
   MF48189      OSP-OTHER-MSGMCH4230 MCH4230 WHEN DOING A STROBJCVN OVER A *

Summary Information

System.............................. i
Models..............................
Release............................. V7R1M0
Licensed Program............... 5770999
APAR Fixed.......................... MA47096
Superseded by:...................... View fix details for PTF MF65387
Recompile........................... N
Library............................. QSYS
MRI Feature ........................ NONE
Cum Level........................... NONE


System i Support

IBM disclaims all warranties, whether express or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. By furnishing this document, IBM grants no licenses to any related patents or copyrights. Copyright © 1996,1997,1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 IBM Corporation. Any trademarks and product or brand names referenced in this document are the property of their respective owners. Consult the Terms of use link for trademark information.

Document information

More support for: i family

Software version: V7R1M0

Operating system(s): OS/400

Reference #: MF65182

Modified date: 12 September 2018