diff --git a/glnx-local-alloc.h b/glnx-local-alloc.h
index a193e603a3917b52b1372884144b4a8c8997df3f..af5af4b88ff812555f697773cc503f077a04ffb3 100644
--- a/glnx-local-alloc.h
+++ b/glnx-local-alloc.h
@@ -211,4 +211,12 @@ glnx_cleanup_close_fdp (int *fdp)
  */
 #define glnx_fd_close __attribute__((cleanup(glnx_cleanup_close_fdp)))
 
+static inline int
+glnx_steal_fd (int *fdp)
+{
+  int fd = *fdp;
+  *fdp = -1;
+  return fd;
+}
+
 G_END_DECLS