From 52308aeca881adb5c0cd7d29e19e41b4042d4d3a Mon Sep 17 00:00:00 2001 From: Jens Remus Date: Wed, 15 Oct 2025 17:45:48 +0200 Subject: [PATCH] libsframe: s390: No further decode if sframe_get_fre_offset returns err SFrame FREs without any offsets will later be used to represent .cfi_undefined RA in SFrame. As a result the API to get the CFA offset can return an error value, if there are no offsets. Do not apply the s390x-specific decoding of CFA offset on the error return value. libsframe/ * sframe.c (sframe_fre_get_cfa_offset): Do not apply s390x- specific decoding to error return value. Signed-off-by: Jens Remus --- libsframe/sframe.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libsframe/sframe.c b/libsframe/sframe.c index b70b0e880c9..f56742ee1a1 100644 --- a/libsframe/sframe.c +++ b/libsframe/sframe.c @@ -698,12 +698,15 @@ int32_t sframe_fre_get_cfa_offset (sframe_decoder_ctx *dctx, sframe_frame_row_entry *fre, int *errp) { - int32_t offset = sframe_get_fre_offset (fre, SFRAME_FRE_CFA_OFFSET_IDX, errp); + int err; + int32_t offset = sframe_get_fre_offset (fre, SFRAME_FRE_CFA_OFFSET_IDX, &err); /* For s390x undo adjustment of CFA offset (to enable 8-bit offsets). */ - if (sframe_decoder_get_abi_arch (dctx) == SFRAME_ABI_S390X_ENDIAN_BIG) + if (!err && sframe_decoder_get_abi_arch (dctx) == SFRAME_ABI_S390X_ENDIAN_BIG) offset = SFRAME_V2_S390X_CFA_OFFSET_DECODE (offset); + if (errp) + *errp = err; return offset; } -- 2.47.3