Commit ab91292c authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'char-misc-5.10-rc7' 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 driver fixes, and one "large" revert, for
  5.10-rc7.

  They include:

   - revert mei patch from 5.10-rc1 that was using a reserved userspace
     value. It will be resubmitted once the proper id has been assigned
     by the virtio people.

   - habanalabs fixes found by the fall-through audit from Gustavo

   - speakup driver fixes for reported issues

   - fpga config build fix for reported issue.

  All of these except the revert have been in linux-next with no
  reported issues. The revert is "clean" and just removes a
  previously-added driver, so no real issue there"

* tag 'char-misc-5.10-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
  Revert "mei: virtio: virtualization frontend driver"
  fpga: Specify HAS_IOMEM dependency for FPGA_DFL
  habanalabs: put devices before driver removal
  habanalabs: free host huge va_range if not used
  speakup: Reject setting the speakup line discipline outside of speakup
parents d49248eb 264f53b4
...@@ -47,27 +47,20 @@ static int spk_ttyio_ldisc_open(struct tty_struct *tty) ...@@ -47,27 +47,20 @@ static int spk_ttyio_ldisc_open(struct tty_struct *tty)
{ {
struct spk_ldisc_data *ldisc_data; struct spk_ldisc_data *ldisc_data;
if (tty != speakup_tty)
/* Somebody tried to use this line discipline outside speakup */
return -ENODEV;
if (!tty->ops->write) if (!tty->ops->write)
return -EOPNOTSUPP; return -EOPNOTSUPP;
mutex_lock(&speakup_tty_mutex);
if (speakup_tty) {
mutex_unlock(&speakup_tty_mutex);
return -EBUSY;
}
speakup_tty = tty;
ldisc_data = kmalloc(sizeof(*ldisc_data), GFP_KERNEL); ldisc_data = kmalloc(sizeof(*ldisc_data), GFP_KERNEL);
if (!ldisc_data) { if (!ldisc_data)
speakup_tty = NULL;
mutex_unlock(&speakup_tty_mutex);
return -ENOMEM; return -ENOMEM;
}
init_completion(&ldisc_data->completion); init_completion(&ldisc_data->completion);
ldisc_data->buf_free = true; ldisc_data->buf_free = true;
speakup_tty->disc_data = ldisc_data; tty->disc_data = ldisc_data;
mutex_unlock(&speakup_tty_mutex);
return 0; return 0;
} }
...@@ -191,10 +184,26 @@ static int spk_ttyio_initialise_ldisc(struct spk_synth *synth) ...@@ -191,10 +184,26 @@ static int spk_ttyio_initialise_ldisc(struct spk_synth *synth)
tty_unlock(tty); tty_unlock(tty);
mutex_lock(&speakup_tty_mutex);
speakup_tty = tty;
ret = tty_set_ldisc(tty, N_SPEAKUP); ret = tty_set_ldisc(tty, N_SPEAKUP);
if (ret) if (ret)
speakup_tty = NULL;
mutex_unlock(&speakup_tty_mutex);
if (!ret)
/* Success */
return 0;
pr_err("speakup: Failed to set N_SPEAKUP on tty\n"); pr_err("speakup: Failed to set N_SPEAKUP on tty\n");
tty_lock(tty);
if (tty->ops->close)
tty->ops->close(tty, NULL);
tty_unlock(tty);
tty_kclose(tty);
return ret; return ret;
} }
......
...@@ -142,6 +142,7 @@ config FPGA_DFL ...@@ -142,6 +142,7 @@ config FPGA_DFL
tristate "FPGA Device Feature List (DFL) support" tristate "FPGA Device Feature List (DFL) support"
select FPGA_BRIDGE select FPGA_BRIDGE
select FPGA_REGION select FPGA_REGION
depends on HAS_IOMEM
help help
Device Feature List (DFL) defines a feature list structure that Device Feature List (DFL) defines a feature list structure that
creates a linked list of feature headers within the MMIO space creates a linked list of feature headers within the MMIO space
......
...@@ -231,16 +231,16 @@ static int device_cdev_sysfs_add(struct hl_device *hdev) ...@@ -231,16 +231,16 @@ static int device_cdev_sysfs_add(struct hl_device *hdev)
static void device_cdev_sysfs_del(struct hl_device *hdev) static void device_cdev_sysfs_del(struct hl_device *hdev)
{ {
/* device_release() won't be called so must free devices explicitly */ if (!hdev->cdev_sysfs_created)
if (!hdev->cdev_sysfs_created) { goto put_devices;
kfree(hdev->dev_ctrl);
kfree(hdev->dev);
return;
}
hl_sysfs_fini(hdev); hl_sysfs_fini(hdev);
cdev_device_del(&hdev->cdev_ctrl, hdev->dev_ctrl); cdev_device_del(&hdev->cdev_ctrl, hdev->dev_ctrl);
cdev_device_del(&hdev->cdev, hdev->dev); cdev_device_del(&hdev->cdev, hdev->dev);
put_devices:
put_device(hdev->dev);
put_device(hdev->dev_ctrl);
} }
/* /*
...@@ -1371,9 +1371,9 @@ int hl_device_init(struct hl_device *hdev, struct class *hclass) ...@@ -1371,9 +1371,9 @@ int hl_device_init(struct hl_device *hdev, struct class *hclass)
early_fini: early_fini:
device_early_fini(hdev); device_early_fini(hdev);
free_dev_ctrl: free_dev_ctrl:
kfree(hdev->dev_ctrl); put_device(hdev->dev_ctrl);
free_dev: free_dev:
kfree(hdev->dev); put_device(hdev->dev);
out_disabled: out_disabled:
hdev->disabled = true; hdev->disabled = true;
if (add_cdev_sysfs_on_err) if (add_cdev_sysfs_on_err)
......
...@@ -1626,6 +1626,7 @@ static int vm_ctx_init_with_ranges(struct hl_ctx *ctx, ...@@ -1626,6 +1626,7 @@ static int vm_ctx_init_with_ranges(struct hl_ctx *ctx,
goto host_hpage_range_err; goto host_hpage_range_err;
} }
} else { } else {
kfree(ctx->host_huge_va_range);
ctx->host_huge_va_range = ctx->host_va_range; ctx->host_huge_va_range = ctx->host_va_range;
} }
......
...@@ -46,14 +46,4 @@ config INTEL_MEI_TXE ...@@ -46,14 +46,4 @@ config INTEL_MEI_TXE
Supported SoCs: Supported SoCs:
Intel Bay Trail Intel Bay Trail
config INTEL_MEI_VIRTIO
tristate "Intel MEI interface emulation with virtio framework"
select INTEL_MEI
depends on X86 && PCI && VIRTIO_PCI
help
This module implements mei hw emulation over virtio transport.
The module will be called mei_virtio.
Enable this if your virtual machine supports virtual mei
device over virtio.
source "drivers/misc/mei/hdcp/Kconfig" source "drivers/misc/mei/hdcp/Kconfig"
...@@ -22,9 +22,6 @@ obj-$(CONFIG_INTEL_MEI_TXE) += mei-txe.o ...@@ -22,9 +22,6 @@ obj-$(CONFIG_INTEL_MEI_TXE) += mei-txe.o
mei-txe-objs := pci-txe.o mei-txe-objs := pci-txe.o
mei-txe-objs += hw-txe.o mei-txe-objs += hw-txe.o
obj-$(CONFIG_INTEL_MEI_VIRTIO) += mei-virtio.o
mei-virtio-objs := hw-virtio.o
mei-$(CONFIG_EVENT_TRACING) += mei-trace.o mei-$(CONFIG_EVENT_TRACING) += mei-trace.o
CFLAGS_mei-trace.o = -I$(src) CFLAGS_mei-trace.o = -I$(src)
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment