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;
|
int error, olddfd, newdfd;
|
||||||
|
|
||||||
if (args->flags != 0) {
|
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",
|
linux_msg(td, "renameat2 unsupported flags 0x%x",
|
||||||
args->flags);
|
args->flags);
|
||||||
return (EINVAL);
|
return (EINVAL);
|
||||||
|
@ -127,4 +127,11 @@
|
|||||||
#define LINUX_F_UNLCK 2
|
#define LINUX_F_UNLCK 2
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* renameat2 flags
|
||||||
|
*/
|
||||||
|
#define LINUX_RENAME_NOREPLACE 0x00000001
|
||||||
|
#define LINUX_RENAME_EXCHANGE 0x00000002
|
||||||
|
#define LINUX_RENAME_WHITEOUT 0x00000004
|
||||||
|
|
||||||
#endif /* !_LINUX_FILE_H_ */
|
#endif /* !_LINUX_FILE_H_ */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user