Logan,

Am 21.02.2017 um 06:00 schrieb Logan Gunthorpe:
> Hello,
> 
> Our story for this patch-set begins with a new driver I wrote and am in
> the process of submitting upstream. That driver creates a fairly
> standard char device and the code for it was copied from a similar
> instance in device-dax. However, upon review, Greg Kroah-Hartman
> noticed [1] a suspicious line that assigned to the parent field of
> the underlying kobject for the char device.
> 
> I removed that from my code and endeavoured to remove it from the
> code I copied as well. However, Dan Williams pointed out [2] that this
> code is necessary for correct reference counting of the underlying
> structures. This prompted me to do a fair bit more research and
> investigation into whats going on and I found it to be a common pattern.
> (Although misleading and though required to be correct, frequently
> forgotten.) This pattern is used in at least 15 places in the kernel
> and probably should have been used in at least 5 more.
> 
> This patch-set aims to correct this and hopefully prevent future
> developers from wasting their time on it. The first patch introduces
> a new helper API as originally proposed by Dan Williams [3]. Please
> see the commit message for that patch for a longer description of the
> problem and history.
> 
> The subsequent patches either update correct instances to use the
> new API or fix incorrect usages to ensure the cdev correctly takes
> a reference count using the new API (this is noted in those patches).
> 
> This moves all except four of the cdev.kobj.parent usages into the one
> cdev function, the remaining four are in the infiniband subsystem and
> I've left alone because that subsystem seems to make use of kobjects
> directly (instead of struct devices). These are noted in patch 7 of
> this series.
> 
> This series is based on v4.10 with the exception of the last patch
> which is for my new driver which, as yet, has not been accepted
> upstream.
> 
> @Dan the first patch in this series will need your sign-off.
> 
> Thanks,
> 
> Logan
> 
> [1] https://lkml.org/lkml/2017/2/10/370
> [2] https://lkml.org/lkml/2017/2/10/607
> [3] https://lkml.org/lkml/2017/2/13/700
> 
> Logan Gunthorpe (14):
>   chardev: add helper function to register char devs with a struct
>     device
>   device-dax: utilize new device_add_cdev helper function
>   input: utilize new device_add_cdev helper function
>   gpiolib: utilize new device_add_cdev helper function
>   tpm-chip: utilize new device_add_cdev helper function
>   platform/chrome: utilize new device_add_cdev helper function
>   infiniband: utilize new device_add_cdev helper function
>   iio:core: utilize new device_add_cdev helper function
>   media: utilize new device_add_cdev helper function
>   mtd: utilize new device_add_cdev helper function
>   rapidio: utilize new device_add_cdev helper function
>   rtc: utilize new device_add_cdev helper function
>   scsi: utilize new device_add_cdev helper function
>   switchtec: utilize new device_add_cdev helper function
> 
>  drivers/char/tpm/tpm-chip.c              |  3 +--
>  drivers/dax/dax.c                        |  5 ++---
>  drivers/gpio/gpiolib.c                   |  3 +--
>  drivers/iio/industrialio-core.c          |  3 +--
>  drivers/infiniband/core/ucm.c            |  8 +++++---
>  drivers/input/evdev.c                    |  3 +--
>  drivers/input/joydev.c                   |  3 +--
>  drivers/input/mousedev.c                 |  3 +--
>  drivers/media/cec/cec-core.c             |  3 +--
>  drivers/media/media-devnode.c            |  3 +--
>  drivers/mtd/ubi/build.c                  |  8 +++++---
>  drivers/mtd/ubi/vmt.c                    | 10 +++++-----
>  drivers/pci/switch/switchtec.c           |  3 +--
>  drivers/platform/chrome/cros_ec_dev.c    |  6 ++----
>  drivers/rapidio/devices/rio_mport_cdev.c |  9 ++++++---
>  drivers/rtc/rtc-dev.c                    |  3 +--
>  drivers/scsi/osd/osd_uld.c               |  9 +++++----
>  fs/char_dev.c                            | 24 ++++++++++++++++++++++++
>  include/linux/cdev.h                     |  1 +
>  19 files changed, 65 insertions(+), 45 deletions(-)

Do you have a git tree where I can pull from?

Thanks,
//richard
_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm

Reply via email to