mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:41:42 +00:00
Char/Misc driver fixes for 6.7-rc5
Here are some small fixes for 6.7-rc5 for a variety of small driver subsystems. Included in here are: - debugfs revert for reported issue - greybus revert for reported issue - greybus fixup for endian build warning - coresight driver fixes - nvmem driver fixes - devcoredump fix - parport new device id - ndtest build fix All of these have ben in linux-next with no reported issues. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -----BEGIN PGP SIGNATURE----- iG0EABECAC0WIQT0tgzFv3jCIUoxPcsxR9QN2y37KQUCZXRxAQ8cZ3JlZ0Brcm9h aC5jb20ACgkQMUfUDdst+ykphwCfaF0Dh6oajneYbo/pq70+an876uYAnjwALPfr g2EezrYYUAkkPACOd27t =q7gC -----END PGP SIGNATURE----- Merge tag 'char-misc-6.7-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc Pull char / misc driver fixes from Greg KH: "Here are some small fixes for 6.7-rc5 for a variety of small driver subsystems. Included in here are: - debugfs revert for reported issue - greybus revert for reported issue - greybus fixup for endian build warning - coresight driver fixes - nvmem driver fixes - devcoredump fix - parport new device id - ndtest build fix All of these have ben in linux-next with no reported issues" * tag 'char-misc-6.7-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: nvmem: Do not expect fixed layouts to grab a layout driver parport: Add support for Brainboxes IX/UC/PX parallel cards Revert "greybus: gb-beagleplay: Ensure le for values in transport" greybus: gb-beagleplay: Ensure le for values in transport greybus: BeaglePlay driver needs CRC_CCITT Revert "debugfs: annotate debugfs handlers vs. removal with lockdep" devcoredump: Send uevent once devcd is ready ndtest: fix typo class_regster -> class_register misc: mei: client.c: fix problem of return '-EOVERFLOW' in mei_cl_write misc: mei: client.c: return negative error code in mei_cl_write mei: pxp: fix mei_pxp_send_message return value coresight: ultrasoc-smb: Fix uninitialized before use buf_hw_base coresight: ultrasoc-smb: Config SMB buffer before register sink coresight: ultrasoc-smb: Fix sleep while close preempt in enable_smb Documentation: coresight: fix `make refcheckdocs` warning hwtracing: hisi_ptt: Don't try to attach a task hwtracing: hisi_ptt: Handle the interrupt in hardirq context hwtracing: hisi_ptt: Add dummy callback pmu::read() coresight: Fix crash when Perf and sysfs modes are used concurrently coresight: etm4x: Remove bogous __exit annotation for some functions
This commit is contained in:
commit
ca20f1622b
@ -130,7 +130,7 @@ Misc:
|
||||
Device Tree Bindings
|
||||
--------------------
|
||||
|
||||
See Documentation/devicetree/bindings/arm/arm,coresight-\*.yaml for details.
|
||||
See ``Documentation/devicetree/bindings/arm/arm,coresight-*.yaml`` for details.
|
||||
|
||||
As of this writing drivers for ITM, STMs and CTIs are not provided but are
|
||||
expected to be added as the solution matures.
|
||||
|
@ -362,6 +362,7 @@ void dev_coredumpm(struct device *dev, struct module *owner,
|
||||
devcd->devcd_dev.class = &devcd_class;
|
||||
|
||||
mutex_lock(&devcd->mutex);
|
||||
dev_set_uevent_suppress(&devcd->devcd_dev, true);
|
||||
if (device_add(&devcd->devcd_dev))
|
||||
goto put_device;
|
||||
|
||||
@ -376,6 +377,8 @@ void dev_coredumpm(struct device *dev, struct module *owner,
|
||||
"devcoredump"))
|
||||
dev_warn(dev, "devcoredump create_link failed\n");
|
||||
|
||||
dev_set_uevent_suppress(&devcd->devcd_dev, false);
|
||||
kobject_uevent(&devcd->devcd_dev.kobj, KOBJ_ADD);
|
||||
INIT_DELAYED_WORK(&devcd->del_wk, devcd_del);
|
||||
schedule_delayed_work(&devcd->del_wk, DEVCD_TIMEOUT);
|
||||
mutex_unlock(&devcd->mutex);
|
||||
|
@ -20,6 +20,7 @@ if GREYBUS
|
||||
config GREYBUS_BEAGLEPLAY
|
||||
tristate "Greybus BeaglePlay driver"
|
||||
depends on SERIAL_DEV_BUS
|
||||
select CRC_CCITT
|
||||
help
|
||||
Select this option if you have a BeaglePlay where CC1352
|
||||
co-processor acts as Greybus SVC.
|
||||
|
@ -493,7 +493,7 @@ static void etm_event_start(struct perf_event *event, int flags)
|
||||
goto fail_end_stop;
|
||||
|
||||
/* Finally enable the tracer */
|
||||
if (coresight_enable_source(csdev, CS_MODE_PERF, event))
|
||||
if (source_ops(csdev)->enable(csdev, event, CS_MODE_PERF))
|
||||
goto fail_disable_path;
|
||||
|
||||
/*
|
||||
@ -587,7 +587,7 @@ static void etm_event_stop(struct perf_event *event, int mode)
|
||||
return;
|
||||
|
||||
/* stop tracer */
|
||||
coresight_disable_source(csdev, event);
|
||||
source_ops(csdev)->disable(csdev, event);
|
||||
|
||||
/* tell the core */
|
||||
event->hw.state = PERF_HES_STOPPED;
|
||||
|
@ -2224,7 +2224,7 @@ static void clear_etmdrvdata(void *info)
|
||||
per_cpu(delayed_probe, cpu) = NULL;
|
||||
}
|
||||
|
||||
static void __exit etm4_remove_dev(struct etmv4_drvdata *drvdata)
|
||||
static void etm4_remove_dev(struct etmv4_drvdata *drvdata)
|
||||
{
|
||||
bool had_delayed_probe;
|
||||
/*
|
||||
@ -2253,7 +2253,7 @@ static void __exit etm4_remove_dev(struct etmv4_drvdata *drvdata)
|
||||
}
|
||||
}
|
||||
|
||||
static void __exit etm4_remove_amba(struct amba_device *adev)
|
||||
static void etm4_remove_amba(struct amba_device *adev)
|
||||
{
|
||||
struct etmv4_drvdata *drvdata = dev_get_drvdata(&adev->dev);
|
||||
|
||||
@ -2261,7 +2261,7 @@ static void __exit etm4_remove_amba(struct amba_device *adev)
|
||||
etm4_remove_dev(drvdata);
|
||||
}
|
||||
|
||||
static int __exit etm4_remove_platform_dev(struct platform_device *pdev)
|
||||
static int etm4_remove_platform_dev(struct platform_device *pdev)
|
||||
{
|
||||
struct etmv4_drvdata *drvdata = dev_get_drvdata(&pdev->dev);
|
||||
|
||||
|
@ -99,7 +99,7 @@ static int smb_open(struct inode *inode, struct file *file)
|
||||
struct smb_drv_data, miscdev);
|
||||
int ret = 0;
|
||||
|
||||
mutex_lock(&drvdata->mutex);
|
||||
spin_lock(&drvdata->spinlock);
|
||||
|
||||
if (drvdata->reading) {
|
||||
ret = -EBUSY;
|
||||
@ -115,7 +115,7 @@ static int smb_open(struct inode *inode, struct file *file)
|
||||
|
||||
drvdata->reading = true;
|
||||
out:
|
||||
mutex_unlock(&drvdata->mutex);
|
||||
spin_unlock(&drvdata->spinlock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -132,10 +132,8 @@ static ssize_t smb_read(struct file *file, char __user *data, size_t len,
|
||||
if (!len)
|
||||
return 0;
|
||||
|
||||
mutex_lock(&drvdata->mutex);
|
||||
|
||||
if (!sdb->data_size)
|
||||
goto out;
|
||||
return 0;
|
||||
|
||||
to_copy = min(sdb->data_size, len);
|
||||
|
||||
@ -145,20 +143,15 @@ static ssize_t smb_read(struct file *file, char __user *data, size_t len,
|
||||
|
||||
if (copy_to_user(data, sdb->buf_base + sdb->buf_rdptr, to_copy)) {
|
||||
dev_dbg(dev, "Failed to copy data to user\n");
|
||||
to_copy = -EFAULT;
|
||||
goto out;
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
*ppos += to_copy;
|
||||
|
||||
smb_update_read_ptr(drvdata, to_copy);
|
||||
|
||||
dev_dbg(dev, "%zu bytes copied\n", to_copy);
|
||||
out:
|
||||
if (!sdb->data_size)
|
||||
smb_reset_buffer(drvdata);
|
||||
mutex_unlock(&drvdata->mutex);
|
||||
|
||||
dev_dbg(dev, "%zu bytes copied\n", to_copy);
|
||||
return to_copy;
|
||||
}
|
||||
|
||||
@ -167,9 +160,9 @@ static int smb_release(struct inode *inode, struct file *file)
|
||||
struct smb_drv_data *drvdata = container_of(file->private_data,
|
||||
struct smb_drv_data, miscdev);
|
||||
|
||||
mutex_lock(&drvdata->mutex);
|
||||
spin_lock(&drvdata->spinlock);
|
||||
drvdata->reading = false;
|
||||
mutex_unlock(&drvdata->mutex);
|
||||
spin_unlock(&drvdata->spinlock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -262,7 +255,7 @@ static int smb_enable(struct coresight_device *csdev, enum cs_mode mode,
|
||||
struct smb_drv_data *drvdata = dev_get_drvdata(csdev->dev.parent);
|
||||
int ret = 0;
|
||||
|
||||
mutex_lock(&drvdata->mutex);
|
||||
spin_lock(&drvdata->spinlock);
|
||||
|
||||
/* Do nothing, the trace data is reading by other interface now */
|
||||
if (drvdata->reading) {
|
||||
@ -294,7 +287,7 @@ static int smb_enable(struct coresight_device *csdev, enum cs_mode mode,
|
||||
|
||||
dev_dbg(&csdev->dev, "Ultrasoc SMB enabled\n");
|
||||
out:
|
||||
mutex_unlock(&drvdata->mutex);
|
||||
spin_unlock(&drvdata->spinlock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -304,7 +297,7 @@ static int smb_disable(struct coresight_device *csdev)
|
||||
struct smb_drv_data *drvdata = dev_get_drvdata(csdev->dev.parent);
|
||||
int ret = 0;
|
||||
|
||||
mutex_lock(&drvdata->mutex);
|
||||
spin_lock(&drvdata->spinlock);
|
||||
|
||||
if (drvdata->reading) {
|
||||
ret = -EBUSY;
|
||||
@ -327,7 +320,7 @@ static int smb_disable(struct coresight_device *csdev)
|
||||
|
||||
dev_dbg(&csdev->dev, "Ultrasoc SMB disabled\n");
|
||||
out:
|
||||
mutex_unlock(&drvdata->mutex);
|
||||
spin_unlock(&drvdata->spinlock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -408,7 +401,7 @@ static unsigned long smb_update_buffer(struct coresight_device *csdev,
|
||||
if (!buf)
|
||||
return 0;
|
||||
|
||||
mutex_lock(&drvdata->mutex);
|
||||
spin_lock(&drvdata->spinlock);
|
||||
|
||||
/* Don't do anything if another tracer is using this sink. */
|
||||
if (atomic_read(&csdev->refcnt) != 1)
|
||||
@ -432,7 +425,7 @@ static unsigned long smb_update_buffer(struct coresight_device *csdev,
|
||||
if (!buf->snapshot && lost)
|
||||
perf_aux_output_flag(handle, PERF_AUX_FLAG_TRUNCATED);
|
||||
out:
|
||||
mutex_unlock(&drvdata->mutex);
|
||||
spin_unlock(&drvdata->spinlock);
|
||||
|
||||
return data_size;
|
||||
}
|
||||
@ -484,7 +477,6 @@ static int smb_init_data_buffer(struct platform_device *pdev,
|
||||
static void smb_init_hw(struct smb_drv_data *drvdata)
|
||||
{
|
||||
smb_disable_hw(drvdata);
|
||||
smb_reset_buffer(drvdata);
|
||||
|
||||
writel(SMB_LB_CFG_LO_DEFAULT, drvdata->base + SMB_LB_CFG_LO_REG);
|
||||
writel(SMB_LB_CFG_HI_DEFAULT, drvdata->base + SMB_LB_CFG_HI_REG);
|
||||
@ -590,37 +582,33 @@ static int smb_probe(struct platform_device *pdev)
|
||||
return ret;
|
||||
}
|
||||
|
||||
mutex_init(&drvdata->mutex);
|
||||
ret = smb_config_inport(dev, true);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
smb_reset_buffer(drvdata);
|
||||
platform_set_drvdata(pdev, drvdata);
|
||||
spin_lock_init(&drvdata->spinlock);
|
||||
drvdata->pid = -1;
|
||||
|
||||
ret = smb_register_sink(pdev, drvdata);
|
||||
if (ret) {
|
||||
smb_config_inport(&pdev->dev, false);
|
||||
dev_err(dev, "Failed to register SMB sink\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = smb_config_inport(dev, true);
|
||||
if (ret) {
|
||||
smb_unregister_sink(drvdata);
|
||||
return ret;
|
||||
}
|
||||
|
||||
platform_set_drvdata(pdev, drvdata);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int smb_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct smb_drv_data *drvdata = platform_get_drvdata(pdev);
|
||||
int ret;
|
||||
|
||||
ret = smb_config_inport(&pdev->dev, false);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
smb_unregister_sink(drvdata);
|
||||
|
||||
smb_config_inport(&pdev->dev, false);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
#define _ULTRASOC_SMB_H
|
||||
|
||||
#include <linux/miscdevice.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/spinlock.h>
|
||||
|
||||
/* Offset of SMB global registers */
|
||||
#define SMB_GLB_CFG_REG 0x00
|
||||
@ -105,7 +105,7 @@ struct smb_data_buffer {
|
||||
* @csdev: Component vitals needed by the framework.
|
||||
* @sdb: Data buffer for SMB.
|
||||
* @miscdev: Specifics to handle "/dev/xyz.smb" entry.
|
||||
* @mutex: Control data access to one at a time.
|
||||
* @spinlock: Control data access to one at a time.
|
||||
* @reading: Synchronise user space access to SMB buffer.
|
||||
* @pid: Process ID of the process being monitored by the
|
||||
* session that is using this component.
|
||||
@ -116,7 +116,7 @@ struct smb_drv_data {
|
||||
struct coresight_device *csdev;
|
||||
struct smb_data_buffer sdb;
|
||||
struct miscdevice miscdev;
|
||||
struct mutex mutex;
|
||||
spinlock_t spinlock;
|
||||
bool reading;
|
||||
pid_t pid;
|
||||
enum cs_mode mode;
|
||||
|
@ -342,9 +342,9 @@ static int hisi_ptt_register_irq(struct hisi_ptt *hisi_ptt)
|
||||
return ret;
|
||||
|
||||
hisi_ptt->trace_irq = pci_irq_vector(pdev, HISI_PTT_TRACE_DMA_IRQ);
|
||||
ret = devm_request_threaded_irq(&pdev->dev, hisi_ptt->trace_irq,
|
||||
NULL, hisi_ptt_isr, 0,
|
||||
DRV_NAME, hisi_ptt);
|
||||
ret = devm_request_irq(&pdev->dev, hisi_ptt->trace_irq, hisi_ptt_isr,
|
||||
IRQF_NOBALANCING | IRQF_NO_THREAD, DRV_NAME,
|
||||
hisi_ptt);
|
||||
if (ret) {
|
||||
pci_err(pdev, "failed to request irq %d, ret = %d\n",
|
||||
hisi_ptt->trace_irq, ret);
|
||||
@ -1000,6 +1000,9 @@ static int hisi_ptt_pmu_event_init(struct perf_event *event)
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
if (event->attach_state & PERF_ATTACH_TASK)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (event->attr.type != hisi_ptt->hisi_ptt_pmu.type)
|
||||
return -ENOENT;
|
||||
|
||||
@ -1178,6 +1181,10 @@ static void hisi_ptt_pmu_del(struct perf_event *event, int flags)
|
||||
hisi_ptt_pmu_stop(event, PERF_EF_UPDATE);
|
||||
}
|
||||
|
||||
static void hisi_ptt_pmu_read(struct perf_event *event)
|
||||
{
|
||||
}
|
||||
|
||||
static void hisi_ptt_remove_cpuhp_instance(void *hotplug_node)
|
||||
{
|
||||
cpuhp_state_remove_instance_nocalls(hisi_ptt_pmu_online, hotplug_node);
|
||||
@ -1221,6 +1228,7 @@ static int hisi_ptt_register_pmu(struct hisi_ptt *hisi_ptt)
|
||||
.stop = hisi_ptt_pmu_stop,
|
||||
.add = hisi_ptt_pmu_add,
|
||||
.del = hisi_ptt_pmu_del,
|
||||
.read = hisi_ptt_pmu_read,
|
||||
};
|
||||
|
||||
reg = readl(hisi_ptt->iobase + HISI_PTT_LOCATION);
|
||||
|
@ -2011,7 +2011,7 @@ ssize_t mei_cl_write(struct mei_cl *cl, struct mei_cl_cb *cb, unsigned long time
|
||||
|
||||
mei_hdr = mei_msg_hdr_init(cb);
|
||||
if (IS_ERR(mei_hdr)) {
|
||||
rets = -PTR_ERR(mei_hdr);
|
||||
rets = PTR_ERR(mei_hdr);
|
||||
mei_hdr = NULL;
|
||||
goto err;
|
||||
}
|
||||
@ -2032,7 +2032,7 @@ ssize_t mei_cl_write(struct mei_cl *cl, struct mei_cl_cb *cb, unsigned long time
|
||||
|
||||
hbuf_slots = mei_hbuf_empty_slots(dev);
|
||||
if (hbuf_slots < 0) {
|
||||
rets = -EOVERFLOW;
|
||||
buf_len = -EOVERFLOW;
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
@ -84,9 +84,10 @@ mei_pxp_send_message(struct device *dev, const void *message, size_t size, unsig
|
||||
byte = ret;
|
||||
break;
|
||||
}
|
||||
return byte;
|
||||
}
|
||||
|
||||
return byte;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -796,6 +796,12 @@ static struct nvmem_layout *nvmem_layout_get(struct nvmem_device *nvmem)
|
||||
if (!layout_np)
|
||||
return NULL;
|
||||
|
||||
/* Fixed layouts don't have a matching driver */
|
||||
if (of_device_is_compatible(layout_np, "fixed-layout")) {
|
||||
of_node_put(layout_np);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* In case the nvmem device was built-in while the layout was built as a
|
||||
* module, we shall manually request the layout driver loading otherwise
|
||||
|
@ -2658,6 +2658,8 @@ enum parport_pc_pci_cards {
|
||||
asix_ax99100,
|
||||
quatech_sppxp100,
|
||||
wch_ch382l,
|
||||
brainboxes_uc146,
|
||||
brainboxes_px203,
|
||||
};
|
||||
|
||||
|
||||
@ -2737,6 +2739,8 @@ static struct parport_pc_pci {
|
||||
/* asix_ax99100 */ { 1, { { 0, 1 }, } },
|
||||
/* quatech_sppxp100 */ { 1, { { 0, 1 }, } },
|
||||
/* wch_ch382l */ { 1, { { 2, -1 }, } },
|
||||
/* brainboxes_uc146 */ { 1, { { 3, -1 }, } },
|
||||
/* brainboxes_px203 */ { 1, { { 0, -1 }, } },
|
||||
};
|
||||
|
||||
static const struct pci_device_id parport_pc_pci_tbl[] = {
|
||||
@ -2833,6 +2837,23 @@ static const struct pci_device_id parport_pc_pci_tbl[] = {
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0, quatech_sppxp100 },
|
||||
/* WCH CH382L PCI-E single parallel port card */
|
||||
{ 0x1c00, 0x3050, 0x1c00, 0x3050, 0, 0, wch_ch382l },
|
||||
/* Brainboxes IX-500/550 */
|
||||
{ PCI_VENDOR_ID_INTASHIELD, 0x402a,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
|
||||
/* Brainboxes UC-146/UC-157 */
|
||||
{ PCI_VENDOR_ID_INTASHIELD, 0x0be1,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0, brainboxes_uc146 },
|
||||
{ PCI_VENDOR_ID_INTASHIELD, 0x0be2,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0, brainboxes_uc146 },
|
||||
/* Brainboxes PX-146/PX-257 */
|
||||
{ PCI_VENDOR_ID_INTASHIELD, 0x401c,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
|
||||
/* Brainboxes PX-203 */
|
||||
{ PCI_VENDOR_ID_INTASHIELD, 0x4007,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0, brainboxes_px203 },
|
||||
/* Brainboxes PX-475 */
|
||||
{ PCI_VENDOR_ID_INTASHIELD, 0x401f,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
|
||||
{ 0, } /* terminate list */
|
||||
};
|
||||
MODULE_DEVICE_TABLE(pci, parport_pc_pci_tbl);
|
||||
|
@ -108,12 +108,6 @@ int debugfs_file_get(struct dentry *dentry)
|
||||
kfree(fsd);
|
||||
fsd = READ_ONCE(dentry->d_fsdata);
|
||||
}
|
||||
#ifdef CONFIG_LOCKDEP
|
||||
fsd->lock_name = kasprintf(GFP_KERNEL, "debugfs:%pd", dentry);
|
||||
lockdep_register_key(&fsd->key);
|
||||
lockdep_init_map(&fsd->lockdep_map, fsd->lock_name ?: "debugfs",
|
||||
&fsd->key, 0);
|
||||
#endif
|
||||
INIT_LIST_HEAD(&fsd->cancellations);
|
||||
mutex_init(&fsd->cancellations_mtx);
|
||||
}
|
||||
@ -132,8 +126,6 @@ int debugfs_file_get(struct dentry *dentry)
|
||||
if (!refcount_inc_not_zero(&fsd->active_users))
|
||||
return -EIO;
|
||||
|
||||
lock_map_acquire_read(&fsd->lockdep_map);
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(debugfs_file_get);
|
||||
@ -151,8 +143,6 @@ void debugfs_file_put(struct dentry *dentry)
|
||||
{
|
||||
struct debugfs_fsdata *fsd = READ_ONCE(dentry->d_fsdata);
|
||||
|
||||
lock_map_release(&fsd->lockdep_map);
|
||||
|
||||
if (refcount_dec_and_test(&fsd->active_users))
|
||||
complete(&fsd->active_users_drained);
|
||||
}
|
||||
|
@ -243,10 +243,6 @@ static void debugfs_release_dentry(struct dentry *dentry)
|
||||
|
||||
/* check it wasn't a dir (no fsdata) or automount (no real_fops) */
|
||||
if (fsd && fsd->real_fops) {
|
||||
#ifdef CONFIG_LOCKDEP
|
||||
lockdep_unregister_key(&fsd->key);
|
||||
kfree(fsd->lock_name);
|
||||
#endif
|
||||
WARN_ON(!list_empty(&fsd->cancellations));
|
||||
mutex_destroy(&fsd->cancellations_mtx);
|
||||
}
|
||||
@ -755,9 +751,6 @@ static void __debugfs_file_removed(struct dentry *dentry)
|
||||
if ((unsigned long)fsd & DEBUGFS_FSDATA_IS_REAL_FOPS_BIT)
|
||||
return;
|
||||
|
||||
lock_map_acquire(&fsd->lockdep_map);
|
||||
lock_map_release(&fsd->lockdep_map);
|
||||
|
||||
/* if we hit zero, just wait for all to finish */
|
||||
if (!refcount_dec_and_test(&fsd->active_users)) {
|
||||
wait_for_completion(&fsd->active_users_drained);
|
||||
|
@ -7,7 +7,6 @@
|
||||
|
||||
#ifndef _DEBUGFS_INTERNAL_H_
|
||||
#define _DEBUGFS_INTERNAL_H_
|
||||
#include <linux/lockdep.h>
|
||||
#include <linux/list.h>
|
||||
|
||||
struct file_operations;
|
||||
@ -25,11 +24,6 @@ struct debugfs_fsdata {
|
||||
struct {
|
||||
refcount_t active_users;
|
||||
struct completion active_users_drained;
|
||||
#ifdef CONFIG_LOCKDEP
|
||||
struct lockdep_map lockdep_map;
|
||||
struct lock_class_key key;
|
||||
char *lock_name;
|
||||
#endif
|
||||
|
||||
/* protect cancellations */
|
||||
struct mutex cancellations_mtx;
|
||||
|
@ -924,7 +924,7 @@ static __init int ndtest_init(void)
|
||||
|
||||
nfit_test_setup(ndtest_resource_lookup, NULL);
|
||||
|
||||
rc = class_regster(&ndtest_dimm_class);
|
||||
rc = class_register(&ndtest_dimm_class);
|
||||
if (rc)
|
||||
goto err_register;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user