mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 01:32:21 +02:00
Char/Misc driver fixes for 7.2-rc5
Here are a number of small char/misc/etc. driver fixes for 7.2-rc5 that resolve a bunch of different reported issues. Included in here are: - rust_binder error message reporting fix - stratix10-svc firmware driver fixes - mei driver fix - intel_th hardware tracing driver fix - comedi driver fix - uio_hv_generic driver fix - ntsync selftest fix - nsm misc driver fix - some MAINTAINER file updates All of these have been in linux-next for over a week with no reported issues. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -----BEGIN PGP SIGNATURE----- iG0EABECAC0WIQT0tgzFv3jCIUoxPcsxR9QN2y37KQUCamYCHg8cZ3JlZ0Brcm9h aC5jb20ACgkQMUfUDdst+ymTpwCgyyS6niRHf2Y0qx/o+i8s87h+ipoAoJeaOzb7 RWX/ZYiUEoQCtfbxmXZF =cRG6 -----END PGP SIGNATURE----- Merge tag 'char-misc-7.2-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc Pull char/misc driver fixes from Greg KH: "Here are a number of small char/misc/etc driver fixes for 7.2-rc5 that resolve a bunch of different reported issues. Included in here are: - rust_binder error message reporting fix - stratix10-svc firmware driver fixes - mei driver fix - intel_th hardware tracing driver fix - comedi driver fix - uio_hv_generic driver fix - ntsync selftest fix - nsm misc driver fix - some MAINTAINER file updates All of these have been in linux-next for over a week with no reported issues" * tag 'char-misc-7.2-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: MAINTAINERS: Update wine-devel list address rust_binder: only print failure if error has source intel_th: fix MSC output device reference leak misc: nsm: pin the module while the device is open mei: bus: access mei_device under device_lock on cleanup misc: nsm: only unlock nsm_dev on post-lock error paths selftests: ntsync: correct CONFIG_NTSYNC name comedi: comedi_parport: deal with premature interrupt uio_hv_generic: Bind to FCopy device by default MAINTAINERS: Add Greg Kroah-Hartman to GPIB firmware: stratix10-svc: fix teardown order in remove to prevent race firmware: stratix10-svc: handle NO_RESPONSE in async poll firmware: stratix10-svc: fix FCS SMC call kernel-doc firmware: stratix10-svc: fix memory leaks and list corruption bugs
This commit is contained in:
commit
09b2124a47
|
|
@ -11108,6 +11108,7 @@ F: drivers/platform/x86/gpd-pocket-fan.c
|
|||
|
||||
GPIB DRIVERS
|
||||
M: Dave Penkler <dpenkler@gmail.com>
|
||||
M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
S: Maintained
|
||||
F: drivers/gpib/
|
||||
F: include/uapi/linux/gpib.h
|
||||
|
|
@ -19301,7 +19302,7 @@ F: fs/ntfs3/
|
|||
|
||||
NTSYNC SYNCHRONIZATION PRIMITIVE DRIVER
|
||||
M: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
L: wine-devel@winehq.org
|
||||
L: wine-devel@list.winehq.org
|
||||
S: Supported
|
||||
F: Documentation/userspace-api/ntsync.rst
|
||||
F: drivers/misc/ntsync.c
|
||||
|
|
|
|||
|
|
@ -1273,14 +1273,14 @@ fn transaction(self: &Arc<Self>, cmd: u32, reader: &mut UserSliceReader) -> Resu
|
|||
inner.extended_error =
|
||||
ExtendedError::new(info.debug_id as u32, err.reply, source.to_errno());
|
||||
}
|
||||
}
|
||||
|
||||
pr_warn!(
|
||||
"{}:{} transaction to {} failed: {err:?}",
|
||||
info.from_pid,
|
||||
info.from_tid,
|
||||
info.to_pid
|
||||
);
|
||||
pr_warn!(
|
||||
"{}:{} transaction to {} failed: {err:?}",
|
||||
info.from_pid,
|
||||
info.from_tid,
|
||||
info.to_pid
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -211,6 +211,13 @@ static irqreturn_t parport_interrupt(int irq, void *d)
|
|||
unsigned int ctrl;
|
||||
unsigned short val = 0;
|
||||
|
||||
/*
|
||||
* Check device is fully attached. Device interrupts should have
|
||||
* been disabled, but do this in case of bad hardware.
|
||||
*/
|
||||
if (!dev->attached)
|
||||
return IRQ_NONE;
|
||||
|
||||
ctrl = inb(dev->iobase + PARPORT_CTRL_REG);
|
||||
if (!(ctrl & PARPORT_CTRL_IRQ_ENA))
|
||||
return IRQ_NONE;
|
||||
|
|
@ -233,6 +240,9 @@ static int parport_attach(struct comedi_device *dev,
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
outb(0, dev->iobase + PARPORT_DATA_REG);
|
||||
outb(0, dev->iobase + PARPORT_CTRL_REG);
|
||||
|
||||
if (it->options[1]) {
|
||||
ret = request_irq(it->options[1], parport_interrupt, 0,
|
||||
dev->board_name, dev);
|
||||
|
|
@ -288,9 +298,6 @@ static int parport_attach(struct comedi_device *dev,
|
|||
s->cancel = parport_intr_cancel;
|
||||
}
|
||||
|
||||
outb(0, dev->iobase + PARPORT_DATA_REG);
|
||||
outb(0, dev->iobase + PARPORT_CTRL_REG);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1499,8 +1499,9 @@ int stratix10_svc_async_poll(struct stratix10_svc_chan *chan,
|
|||
WARN_ON_ONCE(1);
|
||||
}
|
||||
return 0;
|
||||
} else if (handle->res.a0 == INTEL_SIP_SMC_STATUS_BUSY) {
|
||||
dev_dbg(ctrl->dev, "async message is still in progress\n");
|
||||
} else if (handle->res.a0 == INTEL_SIP_SMC_STATUS_BUSY ||
|
||||
handle->res.a0 == INTEL_SIP_SMC_STATUS_NO_RESPONSE) {
|
||||
dev_dbg(ctrl->dev, "async message is not ready yet\n");
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
|
|
@ -1857,14 +1858,16 @@ void *stratix10_svc_allocate_memory(struct stratix10_svc_chan *chan,
|
|||
struct gen_pool *genpool = chan->ctrl->genpool;
|
||||
size_t s = roundup(size, 1 << genpool->min_alloc_order);
|
||||
|
||||
pmem = devm_kzalloc(chan->ctrl->dev, sizeof(*pmem), GFP_KERNEL);
|
||||
pmem = kzalloc_obj(*pmem);
|
||||
if (!pmem)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
guard(mutex)(&svc_mem_lock);
|
||||
va = gen_pool_alloc(genpool, s);
|
||||
if (!va)
|
||||
if (!va) {
|
||||
kfree(pmem);
|
||||
return ERR_PTR(-ENOMEM);
|
||||
}
|
||||
|
||||
memset((void *)va, 0, s);
|
||||
pa = gen_pool_virt_to_phys(genpool, va);
|
||||
|
|
@ -1890,6 +1893,7 @@ EXPORT_SYMBOL_GPL(stratix10_svc_allocate_memory);
|
|||
void stratix10_svc_free_memory(struct stratix10_svc_chan *chan, void *kaddr)
|
||||
{
|
||||
struct stratix10_svc_data_mem *pmem;
|
||||
|
||||
guard(mutex)(&svc_mem_lock);
|
||||
|
||||
list_for_each_entry(pmem, &svc_data_mem, node)
|
||||
|
|
@ -1898,10 +1902,9 @@ void stratix10_svc_free_memory(struct stratix10_svc_chan *chan, void *kaddr)
|
|||
(unsigned long)kaddr, pmem->size);
|
||||
pmem->vaddr = NULL;
|
||||
list_del(&pmem->node);
|
||||
kfree(pmem);
|
||||
return;
|
||||
}
|
||||
|
||||
list_del(&svc_data_mem);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(stratix10_svc_free_memory);
|
||||
|
||||
|
|
@ -2046,12 +2049,12 @@ static void stratix10_svc_drv_remove(struct platform_device *pdev)
|
|||
struct stratix10_svc_controller *ctrl = platform_get_drvdata(pdev);
|
||||
struct stratix10_svc *svc = ctrl->svc;
|
||||
|
||||
platform_device_unregister(svc->stratix10_svc_rsu);
|
||||
|
||||
stratix10_svc_async_exit(ctrl);
|
||||
|
||||
of_platform_depopulate(ctrl->dev);
|
||||
|
||||
platform_device_unregister(svc->stratix10_svc_rsu);
|
||||
|
||||
for (i = 0; i < SVC_NUM_CHANNEL; i++) {
|
||||
if (ctrl->chans[i].task) {
|
||||
kthread_stop(ctrl->chans[i].task);
|
||||
|
|
|
|||
|
|
@ -843,18 +843,8 @@ static int intel_th_output_open(struct inode *inode, struct file *file)
|
|||
return err;
|
||||
}
|
||||
|
||||
static int intel_th_output_release(struct inode *inode, struct file *file)
|
||||
{
|
||||
struct intel_th_device *thdev = file->private_data;
|
||||
|
||||
put_device(&thdev->dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct file_operations intel_th_output_fops = {
|
||||
.open = intel_th_output_open,
|
||||
.release = intel_th_output_release,
|
||||
.llseek = noop_llseek,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1490,8 +1490,10 @@ static int intel_th_msc_release(struct inode *inode, struct file *file)
|
|||
{
|
||||
struct msc_iter *iter = file->private_data;
|
||||
struct msc *msc = iter->msc;
|
||||
struct intel_th_device *thdev = msc->thdev;
|
||||
|
||||
msc_iter_remove(iter, msc);
|
||||
put_device(&thdev->dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
* Intel Management Engine Interface (Intel MEI) Linux driver
|
||||
*/
|
||||
|
||||
#include <linux/cleanup.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/kernel.h>
|
||||
|
|
@ -1330,15 +1331,16 @@ static void mei_dev_bus_put(struct mei_device *bus)
|
|||
static void mei_cl_bus_dev_release(struct device *dev)
|
||||
{
|
||||
struct mei_cl_device *cldev = to_mei_cl_device(dev);
|
||||
struct mei_device *mdev = cldev->cl->dev;
|
||||
struct mei_device *bus = cldev->bus;
|
||||
struct mei_cl *cl;
|
||||
|
||||
mei_cl_flush_queues(cldev->cl, NULL);
|
||||
mei_me_cl_put(cldev->me_cl);
|
||||
mei_dev_bus_put(cldev->bus);
|
||||
|
||||
list_for_each_entry(cl, &mdev->file_list, link)
|
||||
WARN_ON(cl == cldev->cl);
|
||||
scoped_guard(mutex, &bus->device_lock) {
|
||||
mei_cl_flush_queues(cldev->cl, NULL);
|
||||
mei_me_cl_put(cldev->me_cl);
|
||||
list_for_each_entry(cl, &bus->file_list, link)
|
||||
WARN_ON(cl == cldev->cl);
|
||||
}
|
||||
mei_dev_bus_put(bus);
|
||||
|
||||
kfree(cldev->cl);
|
||||
kfree(cldev);
|
||||
|
|
|
|||
|
|
@ -367,7 +367,7 @@ static long nsm_dev_ioctl(struct file *file, unsigned int cmd,
|
|||
/* Copy user argument struct to kernel argument struct */
|
||||
r = -EFAULT;
|
||||
if (copy_from_user(&raw, argp, _IOC_SIZE(cmd)))
|
||||
goto out;
|
||||
return r;
|
||||
|
||||
mutex_lock(&nsm->lock);
|
||||
|
||||
|
|
@ -413,6 +413,7 @@ static int nsm_device_init_vq(struct virtio_device *vdev)
|
|||
}
|
||||
|
||||
static const struct file_operations nsm_dev_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.unlocked_ioctl = nsm_dev_ioctl,
|
||||
.compat_ioctl = compat_ptr_ioctl,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -396,9 +396,15 @@ hv_uio_remove(struct hv_device *dev)
|
|||
vmbus_free_ring(dev->channel);
|
||||
}
|
||||
|
||||
static const struct hv_vmbus_device_id hv_uio_id_table[] = {
|
||||
{ HV_FCOPY_GUID },
|
||||
{}
|
||||
};
|
||||
MODULE_DEVICE_TABLE(vmbus, hv_uio_id_table);
|
||||
|
||||
static struct hv_driver hv_uio_drv = {
|
||||
.name = "uio_hv_generic",
|
||||
.id_table = NULL, /* only dynamic id's */
|
||||
.id_table = hv_uio_id_table,
|
||||
.probe = hv_uio_probe,
|
||||
.remove = hv_uio_remove,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -67,6 +67,9 @@
|
|||
* INTEL_SIP_SMC_STATUS_REJECTED:
|
||||
* Secure monitor software reject the service client's request.
|
||||
*
|
||||
* INTEL_SIP_SMC_STATUS_NO_RESPONSE:
|
||||
* Secure monitor software has no response for the request yet.
|
||||
*
|
||||
* INTEL_SIP_SMC_STATUS_ERROR:
|
||||
* There is error during the process of service request.
|
||||
*
|
||||
|
|
@ -77,6 +80,7 @@
|
|||
#define INTEL_SIP_SMC_STATUS_OK 0x0
|
||||
#define INTEL_SIP_SMC_STATUS_BUSY 0x1
|
||||
#define INTEL_SIP_SMC_STATUS_REJECTED 0x2
|
||||
#define INTEL_SIP_SMC_STATUS_NO_RESPONSE 0x3
|
||||
#define INTEL_SIP_SMC_STATUS_ERROR 0x4
|
||||
#define INTEL_SIP_SMC_RSU_ERROR 0x7
|
||||
|
||||
|
|
@ -606,7 +610,7 @@ INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_COMPLETED_WRITE)
|
|||
|
||||
/**
|
||||
* Request INTEL_SIP_SMC_FUNCID_FCS_SEND_CERTIFICATE
|
||||
* Sync call to send a signed certificate
|
||||
* Async call to send a signed certificate
|
||||
*
|
||||
* Call register usage:
|
||||
* a0 INTEL_SIP_SMC_FCS_SEND_CERTIFICATE
|
||||
|
|
@ -615,7 +619,7 @@ INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_COMPLETED_WRITE)
|
|||
* a3-a7 not used
|
||||
*
|
||||
* Return status:
|
||||
* a0 INTEL_SIP_SMC_STATUS_OK or INTEL_SIP_SMC_FCS_REJECTED
|
||||
* a0 INTEL_SIP_SMC_STATUS_OK or INTEL_SIP_SMC_REJECTED
|
||||
* a1-a3 not used
|
||||
*/
|
||||
#define INTEL_SIP_SMC_FUNCID_FCS_SEND_CERTIFICATE 93
|
||||
|
|
@ -631,9 +635,11 @@ INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_COMPLETED_WRITE)
|
|||
* a1-a7 not used
|
||||
*
|
||||
* Return status:
|
||||
* a0 INTEL_SIP_SMC_STATUS_OK, INTEL_SIP_SMC_FCS_ERROR or
|
||||
* INTEL_SIP_SMC_FCS_REJECTED
|
||||
* a1-a3 not used
|
||||
* a0 INTEL_SIP_SMC_STATUS_OK, INTEL_SIP_SMC_STATUS_ERROR or
|
||||
* INTEL_SIP_SMC_STATUS_REJECTED
|
||||
* a1 mailbox error if a0 is INTEL_SIP_SMC_STATUS_ERROR
|
||||
* a2 physical address for the structure of fuse and key hashes
|
||||
* a3 the size of structure
|
||||
*
|
||||
*/
|
||||
#define INTEL_SIP_SMC_FUNCID_FCS_GET_PROVISION_DATA 94
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
CONFIG_WINESYNC=y
|
||||
CONFIG_NTSYNC=y
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user