On Fri, Dec 24, 2021 at 11:53:15AM +0800, Robert Hoo wrote:
On Thu, 2021-12-23 at 20:29 +0800, Chao Peng wrote:
quoted
From: "Kirill A. Shutemov" <redacted>
+static void notify_fallocate(struct inode *inode, pgoff_t start,
pgoff_t end)
+{
+#ifdef CONFIG_MEMFD_OPS
+ struct shmem_inode_info *info = SHMEM_I(inode);
+ const struct memfd_falloc_notifier *notifier;
+ void *owner;
+ bool ret;
+
+ if (!info->falloc_notifier)
+ return;
+
+ spin_lock(&info->lock);
+ notifier = info->falloc_notifier;
+ if (!notifier) {
+ spin_unlock(&info->lock);
+ return;
+ }
+
+ owner = info->owner;
+ ret = notifier->get_owner(owner);
+ spin_unlock(&info->lock);
+ if (!ret)
+ return;
+
+ notifier->fallocate(inode, owner, start, end);
I see notifier->fallocate(), i.e. memfd_fallocate(), discards
kvm_memfd_fallocate_range()'s return value. Should it be checked?
I think we can ignore it, just like how current mmu_notifier does,
the return value of __kvm_handle_hva_range is discarded in
kvm_mmu_notifier_invalidate_range_start(). Even when KVM side failed,
it's not fatal, it should not block the operation in the primary MMU.
Thanks,
Chao
quoted
+ notifier->put_owner(owner);
+#endif
+}
+