Hello Richard,
On Monday, January 9, 2023 10:08:04 PM EST Richard Guy Briggs wrote:
 When I use an application that expected the old API, meaning it
simply
 does:
 > 
 > response.fd = metadata->fd;
 > response.response = reply;
 > close(metadata->fd);
 > write(fd, &response, sizeof(struct fanotify_response));
 > 
 > I get access denials. Every time. If the program is using the new API and
 > sets FAN_INFO, then it works as expected. I'll do some more testing but I
 > think there is something wrong in the compatibility path.
 
 I'll have a closer look, because this wasn't the intended behaviour. 
I have done more testing. I think what I saw might have been caused by a 
stale selinux label (label exists, policy is deleted). With selinux in 
permissive mode it's all working as expected - both old and new API.
-Steve