diff --git a/coreutils-8.32-split-number.patch b/coreutils-8.32-split-number.patch
new file mode 100644
index 0000000..89541bf
--- /dev/null
+++ b/coreutils-8.32-split-number.patch
@@ -0,0 +1,100 @@
+From bb0e7fabcaed9a7e71e30f05e638e9f243cdb13e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?P=C3=A1draig=20Brady?=
+Date: Mon, 25 Jan 2021 14:12:48 +0000
+Subject: [PATCH] split: fix --number=K/N to output correct part of file
+
+This functionality regressed with the adjustments
+in commit v8.25-4-g62e7af032
+
+* src/split.c (bytes_chunk_extract): Account for already read data
+when seeking into the file.
+* tests/split/b-chunk.sh: Use the hidden ---io-blksize option,
+to test this functionality.
+Fixes https://bugs.gnu.org/46048
+
+Upstream-commit: bb21daa125aeb4e32546309d370918ca47e612db
+Signed-off-by: Kamil Dudka
+---
+ src/split.c | 2 +-
+ tests/split/b-chunk.sh | 45 ++++++++++++++++++++++++------------------
+ 2 files changed, 27 insertions(+), 20 deletions(-)
+
+diff --git a/src/split.c b/src/split.c
+index 09e610b..19248f6 100644
+--- a/src/split.c
++++ b/src/split.c
+@@ -1001,7 +1001,7 @@ bytes_chunk_extract (uintmax_t k, uintmax_t n, char *buf, size_t bufsize,
+ }
+ else
+ {
+- if (lseek (STDIN_FILENO, start, SEEK_CUR) < 0)
++ if (lseek (STDIN_FILENO, start - initial_read, SEEK_CUR) < 0)
+ die (EXIT_FAILURE, errno, "%s", quotef (infile));
+ initial_read = SIZE_MAX;
+ }
+diff --git a/tests/split/b-chunk.sh b/tests/split/b-chunk.sh
+index 864ce55..39a6799 100755
+--- a/tests/split/b-chunk.sh
++++ b/tests/split/b-chunk.sh
+@@ -35,32 +35,39 @@ split -e -n 10 /dev/null || fail=1
+ returns_ 1 stat x?? 2>/dev/null || fail=1
+
+ printf '1\n2\n3\n4\n5\n' > input || framework_failure_
++printf '1\n2' > exp-1 || framework_failure_
++printf '\n3\n' > exp-2 || framework_failure_
++printf '4\n5\n' > exp-3 || framework_failure_
+
+ for file in input /proc/version /sys/kernel/profiling; do
+ test -f $file || continue
+
+- split -n 3 $file > out || fail=1
+- split -n 1/3 $file > b1 || fail=1
+- split -n 2/3 $file > b2 || fail=1
+- split -n 3/3 $file > b3 || fail=1
++ for blksize in 1 2 4096; do
++ if ! test "$file" = 'input'; then
++ # For /proc like files we must be able to read all
++ # into the internal buffer to be able to determine size.
++ test "$blksize" = 4096 || continue
++ fi
+
+- case $file in
+- input)
+- printf '1\n2' > exp-1
+- printf '\n3\n' > exp-2
+- printf '4\n5\n' > exp-3
++ split -n 3 ---io-blksize=$blksize $file > out || fail=1
++ split -n 1/3 ---io-blksize=$blksize $file > b1 || fail=1
++ split -n 2/3 ---io-blksize=$blksize $file > b2 || fail=1
++ split -n 3/3 ---io-blksize=$blksize $file > b3 || fail=1
+
+- compare exp-1 xaa || fail=1
+- compare exp-2 xab || fail=1
+- compare exp-3 xac || fail=1
+- ;;
+- esac
++ case $file in
++ input)
++ compare exp-1 xaa || fail=1
++ compare exp-2 xab || fail=1
++ compare exp-3 xac || fail=1
++ ;;
++ esac
+
+- compare xaa b1 || fail=1
+- compare xab b2 || fail=1
+- compare xac b3 || fail=1
+- cat xaa xab xac | compare - $file || fail=1
+- test -f xad && fail=1
++ compare xaa b1 || fail=1
++ compare xab b2 || fail=1
++ compare xac b3 || fail=1
++ cat xaa xab xac | compare - $file || fail=1
++ test -f xad && fail=1
++ done
+ done
+
+ Exit $fail
+--
+2.26.2
+
diff --git a/coreutils.spec b/coreutils.spec
index 3f2be33..4ab8440 100644
--- a/coreutils.spec
+++ b/coreutils.spec
@@ -34,6 +34,9 @@ Patch6: coreutils-8.32-rm-stray-skip.patch
# expr: fix invalid read with unmatched \(...\) (#1919775)
Patch7: coreutils-8.32-expr-unmatched-par.patch
+# split: fix --number=K/N to output correct part of file (#1921246)
+Patch8: coreutils-8.32-split-number.patch
+
# disable the test-lock gnulib test prone to deadlock
Patch100: coreutils-8.26-test-lock.patch
@@ -288,6 +291,7 @@ rm -f $RPM_BUILD_ROOT%{_infodir}/dir
%changelog
* Tue Feb 02 2021 Kamil Dudka - 8.32-17
+- split: fix --number=K/N to output correct part of file (#1921246)
- expr: fix invalid read with unmatched \(...\) (#1919775)
* Tue Jan 26 2021 Fedora Release Engineering