On 12/19/2018 07:04 AM, gaurav gangalwar wrote:
In vfs_open2-> vfs_open2_by_handle for some cases like UNCHECKED
create
we want to set attrs_out->valid_mask to ATTR_RDATTR_ERR, so that caller
should not rely on populated attrs_out and do getattrs to get valid attrs.
} else if (attrs_out && attrs_out->request_mask &
ATTR_RDATTR_ERR) {
attrs_out->valid_mask &= ATTR_RDATTR_ERR;
}
Doing "&=" is not setting ATTR_RDATTR_ERR as valid_mask is set to 0 by
caller. So caller will always rely on attrs_out.
We should do "=" here.
} else if (attrs_out && attrs_out->request_mask &
ATTR_RDATTR_ERR) {
attrs_out->valid_mask = ATTR_RDATTR_ERR;
}
This could happen if there is create with createmode < FSAL_EXCLUSIVE
and file is already created with mdcache populated handle. We could end
corrupting mdcache attrs in such case.
It should be |=, not &=
Daniel