s390/cpacf: Make use of invalid opcode produce a link error
commit 32e8bd6423fc127d2b37bdcf804fd76af3bbec79 upstream. Instead of calling BUG() at runtime introduce and use a prototype for a non-existing function to produce a link error during compile when a not supported opcode is used with the __cpacf_query() or __cpacf_check_opcode() inline functions. Suggested-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Harald Freudenberger <freude@linux.ibm.com> Reviewed-by: Holger Dengler <dengler@linux.ibm.com> Reviewed-by: Juergen Christ <jchrist@linux.ibm.com> Cc: stable@vger.kernel.org Signed-off-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
ab278ff72a
commit
e049845096
|
@ -166,6 +166,13 @@
|
|||
|
||||
typedef struct { unsigned char bytes[16]; } cpacf_mask_t;
|
||||
|
||||
/*
|
||||
* Prototype for a not existing function to produce a link
|
||||
* error if __cpacf_query() or __cpacf_check_opcode() is used
|
||||
* with an invalid compile time const opcode.
|
||||
*/
|
||||
void __cpacf_bad_opcode(void);
|
||||
|
||||
static __always_inline void __cpacf_query_rre(u32 opc, u8 r1, u8 r2,
|
||||
cpacf_mask_t *mask)
|
||||
{
|
||||
|
@ -237,7 +244,7 @@ static __always_inline void __cpacf_query(unsigned int opcode,
|
|||
__cpacf_query_rre(CPACF_PRNO, 2, 4, mask);
|
||||
break;
|
||||
default:
|
||||
BUG();
|
||||
__cpacf_bad_opcode();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -262,7 +269,8 @@ static __always_inline int __cpacf_check_opcode(unsigned int opcode)
|
|||
case CPACF_KMA:
|
||||
return test_facility(146); /* check for MSA8 */
|
||||
default:
|
||||
BUG();
|
||||
__cpacf_bad_opcode();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue