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:
parent
4a76bd99ac
commit
01b9ee4c50
@ -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);
|
||||
|
@ -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_ */
|
||||
|
Loading…
Reference in New Issue
Block a user