On Fri 01-08-25 09:38:38, Thomas Weißschuh wrote: > replace_fd() returns either a negative error number or the number of the > new file descriptor. The current code misinterprets any positive file > descriptor number as an error. > > Only check for negative error numbers, so that __receive_sock() is called > correctly for valid file descriptors. > > Fixes: 173817151b15 ("fs: Expand __receive_fd() to accept existing fd") > Fixes: 42eb0d54c08a ("fs: split receive_fd_replace from __receive_fd") > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Thomas Weißschuh <thomas.weissschuh@xxxxxxxxxxxxx> Indeed. I'm wondering how come nobody noticed... Feel free to add: Reviewed-by: Jan Kara <jack@xxxxxxx> Honza > --- > Untested, it stuck out while reading the code. > --- > fs/file.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/file.c b/fs/file.c > index 6d2275c3be9c6967d16c75d1b6521f9b58980926..56c3a045121d8f43a54cf05e6ce1962f896339ac 100644 > --- a/fs/file.c > +++ b/fs/file.c > @@ -1387,7 +1387,7 @@ int receive_fd_replace(int new_fd, struct file *file, unsigned int o_flags) > if (error) > return error; > error = replace_fd(new_fd, file, o_flags); > - if (error) > + if (error < 0) > return error; > __receive_sock(file); > return new_fd; > > --- > base-commit: 89748acdf226fd1a8775ff6fa2703f8412b286c8 > change-id: 20250801-fix-receive_fd_replace-7fdd5ce6532d > > Best regards, > -- > Thomas Weißschuh <thomas.weissschuh@xxxxxxxxxxxxx> > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR