diff --git a/8aac320-examples-ucontext-cp.c-cope-with-variable-SIGSTKSZ.patch b/8aac320-examples-ucontext-cp.c-cope-with-variable-SIGSTKSZ.patch new file mode 100644 index 0000000..b057b85 --- /dev/null +++ b/8aac320-examples-ucontext-cp.c-cope-with-variable-SIGSTKSZ.patch @@ -0,0 +1,74 @@ +examples/ucontext-cp.c: cope with variable SIGSTKSZ + +BZ: 1980845 + +commit 8aac320ae8445c5434ab3be1761414a5247e5d42 +Author: Stefan Hajnoczi +Date: Tue Apr 13 16:03:19 2021 +0100 + + examples/ucontext-cp.c: cope with variable SIGSTKSZ + + The size of C arrays at file scope must be constant. The following + compiler error occurs with recent upstream glibc (2.33.9000): + + CC ucontext-cp + ucontext-cp.c:31:23: error: variably modified ‘stack_buf’ at file scope + 31 | unsigned char stack_buf[SIGSTKSZ]; + | ^~~~~~~~~ + make[1]: *** [Makefile:26: ucontext-cp] Error 1 + + The following glibc commit changed SIGSTKSZ from a constant value to a + variable: + + commit 6c57d320484988e87e446e2e60ce42816bf51d53 + Author: H.J. Lu + Date: Mon Feb 1 11:00:38 2021 -0800 + + sysconf: Add _SC_MINSIGSTKSZ/_SC_SIGSTKSZ [BZ #20305] + ... + +# define SIGSTKSZ sysconf (_SC_SIGSTKSZ) + + Allocate the stack buffer explicitly to avoid declaring an array at file + scope. + + Cc: H.J. Lu + Signed-off-by: Stefan Hajnoczi + Signed-off-by: Jens Axboe + +diff --git a/examples/ucontext-cp.c b/examples/ucontext-cp.c +index 0b2a6b5..ea0c934 100644 +--- a/examples/ucontext-cp.c ++++ b/examples/ucontext-cp.c +@@ -28,7 +28,7 @@ + + typedef struct { + struct io_uring *ring; +- unsigned char stack_buf[SIGSTKSZ]; ++ unsigned char *stack_buf; + ucontext_t ctx_main, ctx_fnew; + } async_context; + +@@ -115,8 +115,13 @@ static int setup_context(async_context *pctx, struct io_uring *ring) + perror("getcontext"); + return -1; + } +- pctx->ctx_fnew.uc_stack.ss_sp = &pctx->stack_buf; +- pctx->ctx_fnew.uc_stack.ss_size = sizeof(pctx->stack_buf); ++ pctx->stack_buf = malloc(SIGSTKSZ); ++ if (!pctx->stack_buf) { ++ perror("malloc"); ++ return -1; ++ } ++ pctx->ctx_fnew.uc_stack.ss_sp = pctx->stack_buf; ++ pctx->ctx_fnew.uc_stack.ss_size = SIGSTKSZ; + pctx->ctx_fnew.uc_link = &pctx->ctx_main; + + return 0; +@@ -174,6 +179,7 @@ static void copy_file_wrapper(arguments_bundle *pbundle) + free(iov.iov_base); + close(pbundle->infd); + close(pbundle->outfd); ++ free(pbundle->pctx->stack_buf); + free(pbundle->pctx); + free(pbundle); + diff --git a/liburing.spec b/liburing.spec index 282ee00..72ec10c 100644 --- a/liburing.spec +++ b/liburing.spec @@ -1,6 +1,6 @@ Name: liburing Version: 0.7 -Release: 5%{?dist} +Release: 6%{?dist} Summary: Linux-native io_uring I/O access library License: (GPLv2 with exceptions and LGPLv2+) or MIT Source0: https://brick.kernel.dk/snaps/%{name}-%{version}.tar.gz @@ -9,6 +9,8 @@ URL: https://git.kernel.dk/cgit/liburing/ BuildRequires: gcc BuildRequires: make +Patch0: 8aac320-examples-ucontext-cp.c-cope-with-variable-SIGSTKSZ.patch + %description Provides native async IO for the Linux kernel, in a fast and efficient manner, for both buffered and O_DIRECT. @@ -23,7 +25,7 @@ This package provides header files to include and libraries to link with for the Linux-native io_uring. %prep -%autosetup +%autosetup -p1 %build %set_build_flags @@ -47,6 +49,10 @@ for the Linux-native io_uring. %{_mandir}/man2/* %changelog +* Fri Jul 09 2021 Jeff Moyer - 0.7-6 +- Fix up use of SIGSTKSZ (Jeff Moyer) +- Resolves: rhbz#1980845 + * Fri Apr 16 2021 Mohan Boddu - 0.7-5 - Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937