Loading arch/s390/include/asm/ccwgroup.h +1 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ struct ccwgroup_device { unsigned int count; struct device dev; struct ccw_device *cdev[0]; struct work_struct ungroup_work; }; /** Loading arch/s390/pci/pci_sysfs.c +8 −10 Original line number Diff line number Diff line Loading @@ -48,29 +48,27 @@ static ssize_t show_pfgid(struct device *dev, struct device_attribute *attr, } static DEVICE_ATTR(pfgid, S_IRUGO, show_pfgid, NULL); static void recover_callback(struct device *dev) static ssize_t store_recover(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { struct pci_dev *pdev = to_pci_dev(dev); struct zpci_dev *zdev = get_zdev(pdev); int ret; if (!device_remove_file_self(dev, attr)) return count; pci_stop_and_remove_bus_device(pdev); ret = zpci_disable_device(zdev); if (ret) return; return ret; ret = zpci_enable_device(zdev); if (ret) return; return ret; pci_rescan_bus(zdev->bus); } static ssize_t store_recover(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { int rc = device_schedule_callback(dev, recover_callback); return rc ? rc : count; return count; } static DEVICE_ATTR(recover, S_IWUSR, NULL, store_recover); Loading drivers/base/core.c +17 −33 Original line number Diff line number Diff line Loading @@ -570,6 +570,23 @@ void device_remove_file(struct device *dev, } EXPORT_SYMBOL_GPL(device_remove_file); /** * device_remove_file_self - remove sysfs attribute file from its own method. * @dev: device. * @attr: device attribute descriptor. * * See kernfs_remove_self() for details. */ bool device_remove_file_self(struct device *dev, const struct device_attribute *attr) { if (dev) return sysfs_remove_file_self(&dev->kobj, &attr->attr); else return false; } EXPORT_SYMBOL_GPL(device_remove_file_self); /** * device_create_bin_file - create sysfs binary attribute file for device. * @dev: device. Loading Loading @@ -598,39 +615,6 @@ void device_remove_bin_file(struct device *dev, } EXPORT_SYMBOL_GPL(device_remove_bin_file); /** * device_schedule_callback_owner - helper to schedule a callback for a device * @dev: device. * @func: callback function to invoke later. * @owner: module owning the callback routine * * Attribute methods must not unregister themselves or their parent device * (which would amount to the same thing). Attempts to do so will deadlock, * since unregistration is mutually exclusive with driver callbacks. * * Instead methods can call this routine, which will attempt to allocate * and schedule a workqueue request to call back @func with @dev as its * argument in the workqueue's process context. @dev will be pinned until * @func returns. * * This routine is usually called via the inline device_schedule_callback(), * which automatically sets @owner to THIS_MODULE. * * Returns 0 if the request was submitted, -ENOMEM if storage could not * be allocated, -ENODEV if a reference to @owner isn't available. * * NOTE: This routine won't work if CONFIG_SYSFS isn't set! It uses an * underlying sysfs routine (since it is intended for use by attribute * methods), and if sysfs isn't available you'll get nothing but -ENOSYS. */ int device_schedule_callback_owner(struct device *dev, void (*func)(struct device *), struct module *owner) { return sysfs_schedule_callback(&dev->kobj, (void (*)(void *)) func, dev, owner); } EXPORT_SYMBOL_GPL(device_schedule_callback_owner); static void klist_children_get(struct klist_node *n) { struct device_private *p = to_device_private_parent(n); Loading drivers/base/dma-buf.c +11 −7 Original line number Diff line number Diff line Loading @@ -251,9 +251,8 @@ EXPORT_SYMBOL_GPL(dma_buf_put); * @dmabuf: [in] buffer to attach device to. * @dev: [in] device to be attached. * * Returns struct dma_buf_attachment * for this attachment; may return negative * error codes. * * Returns struct dma_buf_attachment * for this attachment; returns ERR_PTR on * error. */ struct dma_buf_attachment *dma_buf_attach(struct dma_buf *dmabuf, struct device *dev) Loading Loading @@ -319,9 +318,8 @@ EXPORT_SYMBOL_GPL(dma_buf_detach); * @attach: [in] attachment whose scatterlist is to be returned * @direction: [in] direction of DMA transfer * * Returns sg_table containing the scatterlist to be returned; may return NULL * or ERR_PTR. * * Returns sg_table containing the scatterlist to be returned; returns ERR_PTR * on error. */ struct sg_table *dma_buf_map_attachment(struct dma_buf_attachment *attach, enum dma_data_direction direction) Loading @@ -334,6 +332,8 @@ struct sg_table *dma_buf_map_attachment(struct dma_buf_attachment *attach, return ERR_PTR(-EINVAL); sg_table = attach->dmabuf->ops->map_dma_buf(attach, direction); if (!sg_table) sg_table = ERR_PTR(-ENOMEM); return sg_table; } Loading Loading @@ -544,6 +544,8 @@ EXPORT_SYMBOL_GPL(dma_buf_mmap); * These calls are optional in drivers. The intended use for them * is for mapping objects linear in kernel space for high use objects. * Please attempt to use kmap/kunmap before thinking about these interfaces. * * Returns NULL on error. */ void *dma_buf_vmap(struct dma_buf *dmabuf) { Loading @@ -566,7 +568,9 @@ void *dma_buf_vmap(struct dma_buf *dmabuf) BUG_ON(dmabuf->vmap_ptr); ptr = dmabuf->ops->vmap(dmabuf); if (IS_ERR_OR_NULL(ptr)) if (WARN_ON_ONCE(IS_ERR(ptr))) ptr = NULL; if (!ptr) goto out_unlock; dmabuf->vmap_ptr = ptr; Loading drivers/gpu/drm/drm_prime.c +1 −1 Original line number Diff line number Diff line Loading @@ -471,7 +471,7 @@ struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev, get_dma_buf(dma_buf); sgt = dma_buf_map_attachment(attach, DMA_BIDIRECTIONAL); if (IS_ERR_OR_NULL(sgt)) { if (IS_ERR(sgt)) { ret = PTR_ERR(sgt); goto fail_detach; } Loading Loading
arch/s390/include/asm/ccwgroup.h +1 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ struct ccwgroup_device { unsigned int count; struct device dev; struct ccw_device *cdev[0]; struct work_struct ungroup_work; }; /** Loading
arch/s390/pci/pci_sysfs.c +8 −10 Original line number Diff line number Diff line Loading @@ -48,29 +48,27 @@ static ssize_t show_pfgid(struct device *dev, struct device_attribute *attr, } static DEVICE_ATTR(pfgid, S_IRUGO, show_pfgid, NULL); static void recover_callback(struct device *dev) static ssize_t store_recover(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { struct pci_dev *pdev = to_pci_dev(dev); struct zpci_dev *zdev = get_zdev(pdev); int ret; if (!device_remove_file_self(dev, attr)) return count; pci_stop_and_remove_bus_device(pdev); ret = zpci_disable_device(zdev); if (ret) return; return ret; ret = zpci_enable_device(zdev); if (ret) return; return ret; pci_rescan_bus(zdev->bus); } static ssize_t store_recover(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { int rc = device_schedule_callback(dev, recover_callback); return rc ? rc : count; return count; } static DEVICE_ATTR(recover, S_IWUSR, NULL, store_recover); Loading
drivers/base/core.c +17 −33 Original line number Diff line number Diff line Loading @@ -570,6 +570,23 @@ void device_remove_file(struct device *dev, } EXPORT_SYMBOL_GPL(device_remove_file); /** * device_remove_file_self - remove sysfs attribute file from its own method. * @dev: device. * @attr: device attribute descriptor. * * See kernfs_remove_self() for details. */ bool device_remove_file_self(struct device *dev, const struct device_attribute *attr) { if (dev) return sysfs_remove_file_self(&dev->kobj, &attr->attr); else return false; } EXPORT_SYMBOL_GPL(device_remove_file_self); /** * device_create_bin_file - create sysfs binary attribute file for device. * @dev: device. Loading Loading @@ -598,39 +615,6 @@ void device_remove_bin_file(struct device *dev, } EXPORT_SYMBOL_GPL(device_remove_bin_file); /** * device_schedule_callback_owner - helper to schedule a callback for a device * @dev: device. * @func: callback function to invoke later. * @owner: module owning the callback routine * * Attribute methods must not unregister themselves or their parent device * (which would amount to the same thing). Attempts to do so will deadlock, * since unregistration is mutually exclusive with driver callbacks. * * Instead methods can call this routine, which will attempt to allocate * and schedule a workqueue request to call back @func with @dev as its * argument in the workqueue's process context. @dev will be pinned until * @func returns. * * This routine is usually called via the inline device_schedule_callback(), * which automatically sets @owner to THIS_MODULE. * * Returns 0 if the request was submitted, -ENOMEM if storage could not * be allocated, -ENODEV if a reference to @owner isn't available. * * NOTE: This routine won't work if CONFIG_SYSFS isn't set! It uses an * underlying sysfs routine (since it is intended for use by attribute * methods), and if sysfs isn't available you'll get nothing but -ENOSYS. */ int device_schedule_callback_owner(struct device *dev, void (*func)(struct device *), struct module *owner) { return sysfs_schedule_callback(&dev->kobj, (void (*)(void *)) func, dev, owner); } EXPORT_SYMBOL_GPL(device_schedule_callback_owner); static void klist_children_get(struct klist_node *n) { struct device_private *p = to_device_private_parent(n); Loading
drivers/base/dma-buf.c +11 −7 Original line number Diff line number Diff line Loading @@ -251,9 +251,8 @@ EXPORT_SYMBOL_GPL(dma_buf_put); * @dmabuf: [in] buffer to attach device to. * @dev: [in] device to be attached. * * Returns struct dma_buf_attachment * for this attachment; may return negative * error codes. * * Returns struct dma_buf_attachment * for this attachment; returns ERR_PTR on * error. */ struct dma_buf_attachment *dma_buf_attach(struct dma_buf *dmabuf, struct device *dev) Loading Loading @@ -319,9 +318,8 @@ EXPORT_SYMBOL_GPL(dma_buf_detach); * @attach: [in] attachment whose scatterlist is to be returned * @direction: [in] direction of DMA transfer * * Returns sg_table containing the scatterlist to be returned; may return NULL * or ERR_PTR. * * Returns sg_table containing the scatterlist to be returned; returns ERR_PTR * on error. */ struct sg_table *dma_buf_map_attachment(struct dma_buf_attachment *attach, enum dma_data_direction direction) Loading @@ -334,6 +332,8 @@ struct sg_table *dma_buf_map_attachment(struct dma_buf_attachment *attach, return ERR_PTR(-EINVAL); sg_table = attach->dmabuf->ops->map_dma_buf(attach, direction); if (!sg_table) sg_table = ERR_PTR(-ENOMEM); return sg_table; } Loading Loading @@ -544,6 +544,8 @@ EXPORT_SYMBOL_GPL(dma_buf_mmap); * These calls are optional in drivers. The intended use for them * is for mapping objects linear in kernel space for high use objects. * Please attempt to use kmap/kunmap before thinking about these interfaces. * * Returns NULL on error. */ void *dma_buf_vmap(struct dma_buf *dmabuf) { Loading @@ -566,7 +568,9 @@ void *dma_buf_vmap(struct dma_buf *dmabuf) BUG_ON(dmabuf->vmap_ptr); ptr = dmabuf->ops->vmap(dmabuf); if (IS_ERR_OR_NULL(ptr)) if (WARN_ON_ONCE(IS_ERR(ptr))) ptr = NULL; if (!ptr) goto out_unlock; dmabuf->vmap_ptr = ptr; Loading
drivers/gpu/drm/drm_prime.c +1 −1 Original line number Diff line number Diff line Loading @@ -471,7 +471,7 @@ struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev, get_dma_buf(dma_buf); sgt = dma_buf_map_attachment(attach, DMA_BIDIRECTIONAL); if (IS_ERR_OR_NULL(sgt)) { if (IS_ERR(sgt)) { ret = PTR_ERR(sgt); goto fail_detach; } Loading