Fix os.urandom() using getrandom() on Linux

Issue #27278: Fix os.urandom() implementation using getrandom() on Linux.
Truncate size to INT_MAX and loop until we collected enough random bytes,
instead of casting a directly Py_ssize_t to int.
diff --git a/Misc/NEWS b/Misc/NEWS
index e132b96..7940cdc 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -13,6 +13,10 @@
 Library
 -------
 
+- Issue #27278: Fix os.urandom() implementation using getrandom() on Linux.
+  Truncate size to INT_MAX and loop until we collected enough random bytes,
+  instead of casting a directly Py_ssize_t to int.
+
 - Issue #26386: Fixed ttk.TreeView selection operations with item id's
   containing spaces.
 
diff --git a/Python/random.c b/Python/random.c
index 07dacfe..b961020 100644
--- a/Python/random.c
+++ b/Python/random.c
@@ -143,7 +143,7 @@
            to 1024 bytes */
         n = Py_MIN(size, 1024);
 #else
-        n = size;
+        n = Py_MIN(size, INT_MAX);
 #endif
 
         errno = 0;