LU-5150 mdc: Handle empty but non-zero acl xattr

We have found that posix_acl_access can have a value
of \002\000\000\000.  In that case body->aclsize is
non-zero, but the there are no actuall acls stored
in the xattr.

In mdc_unpack_acl(), it only checks IS_ERR() on the
pointer returned by posix_acl_from_xattr(), it does not
check for NULL.  Because of the above situation, the
xattr aclsize can be non-zero, but posic_acl_from_xattr()
still returns NULL.  Passing NULL to posix_acl_valid()
crashes the kernel.

We add a check to properly handle the NULL return value.

Change-Id: Ib4f623642b86db2c88923a27cd9e77c870f301af
Signed-off-by: Christopher J. Morrone <morrone2@llnl.gov>
LU-5150 mdt: filter out the bad ACL

Under some bad cases, the ACL may contains some corrupt data which
may cause the client crash when interprets the corrupt ACL. As the
temporary solution, we will make the MDT to filter out the bad ACL
before returning it to client.

Signed-off-by: Fan Yong <fan.yong@intel.com>
Change-Id: Ic6cecb42509261534a8008a847ade17c23a6ae4a