Re: [PATCH] device-dax: don't set kobj parent during cdev init
From: Logan Gunthorpe
Date: Sat Feb 11 2017 - 13:00:58 EST
On 11/02/17 01:56 AM, Dan Williams wrote:
When the device is unregistered it invalidates all existing mappings,
but the driver may continue to service vm fault requests until the
final put of the cdev. Until that time the fault handler needs to be
able to check dax_dev->alive. Since the final cdev put is handled by
the vfs I use the cdev's kobject to keep the struct dax_dev instance
alive.
I'm just taking a wild stab at this, but would it not make sense to just
take a reference to the dax_dev device in dax_open and put it back it in
dax_release? (Or perhaps, in the open/close of the vm_ops.) That way the
structure won't be free'd until there are no users and alive will always
be accessible.
It would also be a bit more clear as to what's going on because you are
actually making a reference in filp->private_data.
Logan