linux_renameat2: improve flag checks

In the cases where Linux returns an error (e.g. passing in an undefined
flag) there's no need for us to emit a message.  (The target of this
message is a developer working on the linuxulatorm, not the author of
presumably broken Linux software).

Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D21606
This commit is contained in:
Ed Maste 2019-11-07 15:51:44 +00:00
parent 4a76bd99ac
commit 01b9ee4c50
2 changed files with 14 additions and 0 deletions

View File

@ -704,6 +704,13 @@ linux_renameat2(struct thread *td, struct linux_renameat2_args *args)
int error, olddfd, newdfd;
if (args->flags != 0) {
if (args->flags & ~(LINUX_RENAME_EXCHANGE |
LINUX_RENAME_NOREPLACE | LINUX_RENAME_WHITEOUT))
return (EINVAL);
if (args->flags & LINUX_RENAME_EXCHANGE &&
args->flags & (LINUX_RENAME_NOREPLACE |
LINUX_RENAME_WHITEOUT))
return (EINVAL);
linux_msg(td, "renameat2 unsupported flags 0x%x",
args->flags);
return (EINVAL);

View File

@ -127,4 +127,11 @@
#define LINUX_F_UNLCK 2
#endif
/*
* renameat2 flags
*/
#define LINUX_RENAME_NOREPLACE 0x00000001
#define LINUX_RENAME_EXCHANGE 0x00000002
#define LINUX_RENAME_WHITEOUT 0x00000004
#endif /* !_LINUX_FILE_H_ */