Commit d488bd21 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'char-misc-5.0-rc4' 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 char and misc driver fixes to resolve some
  reported issues, as well as a number of binderfs fixups that were
  found after auditing the filesystem code by Al Viro. As binderfs
  hasn't been in a previous release yet, it's good to get these in now
  before the first users show up.

  All of these have been in linux-next for a bit with no reported
  issues"

* tag 'char-misc-5.0-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (26 commits)
  i3c: master: Fix an error checking typo in 'cdns_i3c_master_probe()'
  binderfs: switch from d_add() to d_instantiate()
  binderfs: drop lock in binderfs_binder_ctl_create
  binderfs: kill_litter_super() before cleanup
  binderfs: rework binderfs_binder_device_create()
  binderfs: rework binderfs_fill_super()
  binderfs: prevent renaming the control dentry
  binderfs: remove outdated comment
  binderfs: use __u32 for device numbers
  binderfs: use correct include guards in header
  misc: pvpanic: fix warning implicit declaration
  char/mwave: fix potential Spectre v1 vulnerability
  misc: ibmvsm: Fix potential NULL pointer dereference
  binderfs: fix error return code in binderfs_fill_super()
  mei: me: add denverton innovation engine device IDs
  mei: me: mark LBG devices as having dma support
  mei: dma: silent the reject message
  binderfs: handle !CONFIG_IPC_NS builds
  binderfs: reserve devices for initial mount
  binderfs: rename header to binderfs.h
  ...
parents 96f18cb8 52768f32
This diff is collapsed.
...@@ -59,6 +59,7 @@ ...@@ -59,6 +59,7 @@
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/serial_8250.h> #include <linux/serial_8250.h>
#include <linux/nospec.h>
#include "smapi.h" #include "smapi.h"
#include "mwavedd.h" #include "mwavedd.h"
#include "3780i.h" #include "3780i.h"
...@@ -289,6 +290,8 @@ static long mwave_ioctl(struct file *file, unsigned int iocmd, ...@@ -289,6 +290,8 @@ static long mwave_ioctl(struct file *file, unsigned int iocmd,
ipcnum); ipcnum);
return -EINVAL; return -EINVAL;
} }
ipcnum = array_index_nospec(ipcnum,
ARRAY_SIZE(pDrvData->IPCs));
PRINTK_3(TRACE_MWAVE, PRINTK_3(TRACE_MWAVE,
"mwavedd::mwave_ioctl IOCTL_MW_REGISTER_IPC" "mwavedd::mwave_ioctl IOCTL_MW_REGISTER_IPC"
" ipcnum %x entry usIntCount %x\n", " ipcnum %x entry usIntCount %x\n",
...@@ -317,6 +320,8 @@ static long mwave_ioctl(struct file *file, unsigned int iocmd, ...@@ -317,6 +320,8 @@ static long mwave_ioctl(struct file *file, unsigned int iocmd,
" Invalid ipcnum %x\n", ipcnum); " Invalid ipcnum %x\n", ipcnum);
return -EINVAL; return -EINVAL;
} }
ipcnum = array_index_nospec(ipcnum,
ARRAY_SIZE(pDrvData->IPCs));
PRINTK_3(TRACE_MWAVE, PRINTK_3(TRACE_MWAVE,
"mwavedd::mwave_ioctl IOCTL_MW_GET_IPC" "mwavedd::mwave_ioctl IOCTL_MW_GET_IPC"
" ipcnum %x, usIntCount %x\n", " ipcnum %x, usIntCount %x\n",
...@@ -383,6 +388,8 @@ static long mwave_ioctl(struct file *file, unsigned int iocmd, ...@@ -383,6 +388,8 @@ static long mwave_ioctl(struct file *file, unsigned int iocmd,
ipcnum); ipcnum);
return -EINVAL; return -EINVAL;
} }
ipcnum = array_index_nospec(ipcnum,
ARRAY_SIZE(pDrvData->IPCs));
mutex_lock(&mwave_mutex); mutex_lock(&mwave_mutex);
if (pDrvData->IPCs[ipcnum].bIsEnabled == true) { if (pDrvData->IPCs[ipcnum].bIsEnabled == true) {
pDrvData->IPCs[ipcnum].bIsEnabled = false; pDrvData->IPCs[ipcnum].bIsEnabled = false;
......
...@@ -701,19 +701,12 @@ static int vmbus_close_internal(struct vmbus_channel *channel) ...@@ -701,19 +701,12 @@ static int vmbus_close_internal(struct vmbus_channel *channel)
int vmbus_disconnect_ring(struct vmbus_channel *channel) int vmbus_disconnect_ring(struct vmbus_channel *channel)
{ {
struct vmbus_channel *cur_channel, *tmp; struct vmbus_channel *cur_channel, *tmp;
unsigned long flags;
LIST_HEAD(list);
int ret; int ret;
if (channel->primary_channel != NULL) if (channel->primary_channel != NULL)
return -EINVAL; return -EINVAL;
/* Snapshot the list of subchannels */ list_for_each_entry_safe(cur_channel, tmp, &channel->sc_list, sc_list) {
spin_lock_irqsave(&channel->lock, flags);
list_splice_init(&channel->sc_list, &list);
spin_unlock_irqrestore(&channel->lock, flags);
list_for_each_entry_safe(cur_channel, tmp, &list, sc_list) {
if (cur_channel->rescind) if (cur_channel->rescind)
wait_for_completion(&cur_channel->rescind_event); wait_for_completion(&cur_channel->rescind_event);
......
...@@ -888,12 +888,14 @@ static unsigned long handle_pg_range(unsigned long pg_start, ...@@ -888,12 +888,14 @@ static unsigned long handle_pg_range(unsigned long pg_start,
pfn_cnt -= pgs_ol; pfn_cnt -= pgs_ol;
/* /*
* Check if the corresponding memory block is already * Check if the corresponding memory block is already
* online by checking its last previously backed page. * online. It is possible to observe struct pages still
* In case it is we need to bring rest (which was not * being uninitialized here so check section instead.
* backed previously) online too. * In case the section is online we need to bring the
* rest of pfns (which were not backed previously)
* online too.
*/ */
if (start_pfn > has->start_pfn && if (start_pfn > has->start_pfn &&
!PageReserved(pfn_to_page(start_pfn - 1))) online_section_nr(pfn_to_section_nr(start_pfn)))
hv_bring_pgs_online(has, start_pfn, pgs_ol); hv_bring_pgs_online(has, start_pfn, pgs_ol);
} }
......
...@@ -164,26 +164,25 @@ hv_get_ringbuffer_availbytes(const struct hv_ring_buffer_info *rbi, ...@@ -164,26 +164,25 @@ hv_get_ringbuffer_availbytes(const struct hv_ring_buffer_info *rbi,
} }
/* Get various debug metrics for the specified ring buffer. */ /* Get various debug metrics for the specified ring buffer. */
void hv_ringbuffer_get_debuginfo(const struct hv_ring_buffer_info *ring_info, int hv_ringbuffer_get_debuginfo(const struct hv_ring_buffer_info *ring_info,
struct hv_ring_buffer_debug_info *debug_info) struct hv_ring_buffer_debug_info *debug_info)
{ {
u32 bytes_avail_towrite; u32 bytes_avail_towrite;
u32 bytes_avail_toread; u32 bytes_avail_toread;
if (ring_info->ring_buffer) { if (!ring_info->ring_buffer)
hv_get_ringbuffer_availbytes(ring_info, return -EINVAL;
&bytes_avail_toread,
&bytes_avail_towrite); hv_get_ringbuffer_availbytes(ring_info,
&bytes_avail_toread,
debug_info->bytes_avail_toread = bytes_avail_toread; &bytes_avail_towrite);
debug_info->bytes_avail_towrite = bytes_avail_towrite; debug_info->bytes_avail_toread = bytes_avail_toread;
debug_info->current_read_index = debug_info->bytes_avail_towrite = bytes_avail_towrite;
ring_info->ring_buffer->read_index; debug_info->current_read_index = ring_info->ring_buffer->read_index;
debug_info->current_write_index = debug_info->current_write_index = ring_info->ring_buffer->write_index;
ring_info->ring_buffer->write_index; debug_info->current_interrupt_mask
debug_info->current_interrupt_mask = = ring_info->ring_buffer->interrupt_mask;
ring_info->ring_buffer->interrupt_mask; return 0;
}
} }
EXPORT_SYMBOL_GPL(hv_ringbuffer_get_debuginfo); EXPORT_SYMBOL_GPL(hv_ringbuffer_get_debuginfo);
......
...@@ -313,12 +313,16 @@ static ssize_t out_intr_mask_show(struct device *dev, ...@@ -313,12 +313,16 @@ static ssize_t out_intr_mask_show(struct device *dev,
{ {
struct hv_device *hv_dev = device_to_hv_device(dev); struct hv_device *hv_dev = device_to_hv_device(dev);
struct hv_ring_buffer_debug_info outbound; struct hv_ring_buffer_debug_info outbound;
int ret;
if (!hv_dev->channel) if (!hv_dev->channel)
return -ENODEV; return -ENODEV;
if (hv_dev->channel->state != CHANNEL_OPENED_STATE)
return -EINVAL; ret = hv_ringbuffer_get_debuginfo(&hv_dev->channel->outbound,
hv_ringbuffer_get_debuginfo(&hv_dev->channel->outbound, &outbound); &outbound);
if (ret < 0)
return ret;
return sprintf(buf, "%d\n", outbound.current_interrupt_mask); return sprintf(buf, "%d\n", outbound.current_interrupt_mask);
} }
static DEVICE_ATTR_RO(out_intr_mask); static DEVICE_ATTR_RO(out_intr_mask);
...@@ -328,12 +332,15 @@ static ssize_t out_read_index_show(struct device *dev, ...@@ -328,12 +332,15 @@ static ssize_t out_read_index_show(struct device *dev,
{ {
struct hv_device *hv_dev = device_to_hv_device(dev); struct hv_device *hv_dev = device_to_hv_device(dev);
struct hv_ring_buffer_debug_info outbound; struct hv_ring_buffer_debug_info outbound;
int ret;
if (!hv_dev->channel) if (!hv_dev->channel)
return -ENODEV; return -ENODEV;
if (hv_dev->channel->state != CHANNEL_OPENED_STATE)
return -EINVAL; ret = hv_ringbuffer_get_debuginfo(&hv_dev->channel->outbound,
hv_ringbuffer_get_debuginfo(&hv_dev->channel->outbound, &outbound); &outbound);
if (ret < 0)
return ret;
return sprintf(buf, "%d\n", outbound.current_read_index); return sprintf(buf, "%d\n", outbound.current_read_index);
} }
static DEVICE_ATTR_RO(out_read_index); static DEVICE_ATTR_RO(out_read_index);
...@@ -344,12 +351,15 @@ static ssize_t out_write_index_show(struct device *dev, ...@@ -344,12 +351,15 @@ static ssize_t out_write_index_show(struct device *dev,
{ {
struct hv_device *hv_dev = device_to_hv_device(dev); struct hv_device *hv_dev = device_to_hv_device(dev);
struct hv_ring_buffer_debug_info outbound; struct hv_ring_buffer_debug_info outbound;
int ret;
if (!hv_dev->channel) if (!hv_dev->channel)
return -ENODEV; return -ENODEV;
if (hv_dev->channel->state != CHANNEL_OPENED_STATE)
return -EINVAL; ret = hv_ringbuffer_get_debuginfo(&hv_dev->channel->outbound,
hv_ringbuffer_get_debuginfo(&hv_dev->channel->outbound, &outbound); &outbound);
if (ret < 0)
return ret;
return sprintf(buf, "%d\n", outbound.current_write_index); return sprintf(buf, "%d\n", outbound.current_write_index);
} }
static DEVICE_ATTR_RO(out_write_index); static DEVICE_ATTR_RO(out_write_index);
...@@ -360,12 +370,15 @@ static ssize_t out_read_bytes_avail_show(struct device *dev, ...@@ -360,12 +370,15 @@ static ssize_t out_read_bytes_avail_show(struct device *dev,
{ {
struct hv_device *hv_dev = device_to_hv_device(dev); struct hv_device *hv_dev = device_to_hv_device(dev);
struct hv_ring_buffer_debug_info outbound; struct hv_ring_buffer_debug_info outbound;
int ret;
if (!hv_dev->channel) if (!hv_dev->channel)
return -ENODEV; return -ENODEV;
if (hv_dev->channel->state != CHANNEL_OPENED_STATE)
return -EINVAL; ret = hv_ringbuffer_get_debuginfo(&hv_dev->channel->outbound,
hv_ringbuffer_get_debuginfo(&hv_dev->channel->outbound, &outbound); &outbound);
if (ret < 0)
return ret;
return sprintf(buf, "%d\n", outbound.bytes_avail_toread); return sprintf(buf, "%d\n", outbound.bytes_avail_toread);
} }
static DEVICE_ATTR_RO(out_read_bytes_avail); static DEVICE_ATTR_RO(out_read_bytes_avail);
...@@ -376,12 +389,15 @@ static ssize_t out_write_bytes_avail_show(struct device *dev, ...@@ -376,12 +389,15 @@ static ssize_t out_write_bytes_avail_show(struct device *dev,
{ {
struct hv_device *hv_dev = device_to_hv_device(dev); struct hv_device *hv_dev = device_to_hv_device(dev);
struct hv_ring_buffer_debug_info outbound; struct hv_ring_buffer_debug_info outbound;
int ret;
if (!hv_dev->channel) if (!hv_dev->channel)
return -ENODEV; return -ENODEV;
if (hv_dev->channel->state != CHANNEL_OPENED_STATE)
return -EINVAL; ret = hv_ringbuffer_get_debuginfo(&hv_dev->channel->outbound,
hv_ringbuffer_get_debuginfo(&hv_dev->channel->outbound, &outbound); &outbound);
if (ret < 0)
return ret;
return sprintf(buf, "%d\n", outbound.bytes_avail_towrite); return sprintf(buf, "%d\n", outbound.bytes_avail_towrite);
} }
static DEVICE_ATTR_RO(out_write_bytes_avail); static DEVICE_ATTR_RO(out_write_bytes_avail);
...@@ -391,12 +407,15 @@ static ssize_t in_intr_mask_show(struct device *dev, ...@@ -391,12 +407,15 @@ static ssize_t in_intr_mask_show(struct device *dev,
{ {
struct hv_device *hv_dev = device_to_hv_device(dev); struct hv_device *hv_dev = device_to_hv_device(dev);
struct hv_ring_buffer_debug_info inbound; struct hv_ring_buffer_debug_info inbound;
int ret;
if (!hv_dev->channel) if (!hv_dev->channel)
return -ENODEV; return -ENODEV;
if (hv_dev->channel->state != CHANNEL_OPENED_STATE)
return -EINVAL; ret = hv_ringbuffer_get_debuginfo(&hv_dev->channel->inbound, &inbound);
hv_ringbuffer_get_debuginfo(&hv_dev->channel->inbound, &inbound); if (ret < 0)
return ret;
return sprintf(buf, "%d\n", inbound.current_interrupt_mask); return sprintf(buf, "%d\n", inbound.current_interrupt_mask);
} }
static DEVICE_ATTR_RO(in_intr_mask); static DEVICE_ATTR_RO(in_intr_mask);
...@@ -406,12 +425,15 @@ static ssize_t in_read_index_show(struct device *dev, ...@@ -406,12 +425,15 @@ static ssize_t in_read_index_show(struct device *dev,
{ {
struct hv_device *hv_dev = device_to_hv_device(dev); struct hv_device *hv_dev = device_to_hv_device(dev);
struct hv_ring_buffer_debug_info inbound; struct hv_ring_buffer_debug_info inbound;
int ret;
if (!hv_dev->channel) if (!hv_dev->channel)
return -ENODEV; return -ENODEV;
if (hv_dev->channel->state != CHANNEL_OPENED_STATE)
return -EINVAL; ret = hv_ringbuffer_get_debuginfo(&hv_dev->channel->inbound, &inbound);
hv_ringbuffer_get_debuginfo(&hv_dev->channel->inbound, &inbound); if (ret < 0)
return ret;
return sprintf(buf, "%d\n", inbound.current_read_index); return sprintf(buf, "%d\n", inbound.current_read_index);
} }
static DEVICE_ATTR_RO(in_read_index); static DEVICE_ATTR_RO(in_read_index);
...@@ -421,12 +443,15 @@ static ssize_t in_write_index_show(struct device *dev, ...@@ -421,12 +443,15 @@ static ssize_t in_write_index_show(struct device *dev,
{ {
struct hv_device *hv_dev = device_to_hv_device(dev); struct hv_device *hv_dev = device_to_hv_device(dev);
struct hv_ring_buffer_debug_info inbound; struct hv_ring_buffer_debug_info inbound;
int ret;
if (!hv_dev->channel) if (!hv_dev->channel)
return -ENODEV; return -ENODEV;
if (hv_dev->channel->state != CHANNEL_OPENED_STATE)
return -EINVAL; ret = hv_ringbuffer_get_debuginfo(&hv_dev->channel->inbound, &inbound);
hv_ringbuffer_get_debuginfo(&hv_dev->channel->inbound, &inbound); if (ret < 0)
return ret;
return sprintf(buf, "%d\n", inbound.current_write_index); return sprintf(buf, "%d\n", inbound.current_write_index);
} }
static DEVICE_ATTR_RO(in_write_index); static DEVICE_ATTR_RO(in_write_index);
...@@ -437,12 +462,15 @@ static ssize_t in_read_bytes_avail_show(struct device *dev, ...@@ -437,12 +462,15 @@ static ssize_t in_read_bytes_avail_show(struct device *dev,
{ {
struct hv_device *hv_dev = device_to_hv_device(dev); struct hv_device *hv_dev = device_to_hv_device(dev);
struct hv_ring_buffer_debug_info inbound; struct hv_ring_buffer_debug_info inbound;
int ret;
if (!hv_dev->channel) if (!hv_dev->channel)
return -ENODEV; return -ENODEV;
if (hv_dev->channel->state != CHANNEL_OPENED_STATE)
return -EINVAL; ret = hv_ringbuffer_get_debuginfo(&hv_dev->channel->inbound, &inbound);
hv_ringbuffer_get_debuginfo(&hv_dev->channel->inbound, &inbound); if (ret < 0)
return ret;
return sprintf(buf, "%d\n", inbound.bytes_avail_toread); return sprintf(buf, "%d\n", inbound.bytes_avail_toread);
} }
static DEVICE_ATTR_RO(in_read_bytes_avail); static DEVICE_ATTR_RO(in_read_bytes_avail);
...@@ -453,12 +481,15 @@ static ssize_t in_write_bytes_avail_show(struct device *dev, ...@@ -453,12 +481,15 @@ static ssize_t in_write_bytes_avail_show(struct device *dev,
{ {
struct hv_device *hv_dev = device_to_hv_device(dev); struct hv_device *hv_dev = device_to_hv_device(dev);
struct hv_ring_buffer_debug_info inbound; struct hv_ring_buffer_debug_info inbound;
int ret;
if (!hv_dev->channel) if (!hv_dev->channel)
return -ENODEV; return -ENODEV;
if (hv_dev->channel->state != CHANNEL_OPENED_STATE)
return -EINVAL; ret = hv_ringbuffer_get_debuginfo(&hv_dev->channel->inbound, &inbound);
hv_ringbuffer_get_debuginfo(&hv_dev->channel->inbound, &inbound); if (ret < 0)
return ret;
return sprintf(buf, "%d\n", inbound.bytes_avail_towrite); return sprintf(buf, "%d\n", inbound.bytes_avail_towrite);
} }
static DEVICE_ATTR_RO(in_write_bytes_avail); static DEVICE_ATTR_RO(in_write_bytes_avail);
......
...@@ -820,21 +820,24 @@ static int ibmvmc_send_msg(struct crq_server_adapter *adapter, ...@@ -820,21 +820,24 @@ static int ibmvmc_send_msg(struct crq_server_adapter *adapter,
* *
* Return: * Return:
* 0 - Success * 0 - Success
* Non-zero - Failure
*/ */
static int ibmvmc_open(struct inode *inode, struct file *file) static int ibmvmc_open(struct inode *inode, struct file *file)
{ {
struct ibmvmc_file_session *session; struct ibmvmc_file_session *session;
int rc = 0;
pr_debug("%s: inode = 0x%lx, file = 0x%lx, state = 0x%x\n", __func__, pr_debug("%s: inode = 0x%lx, file = 0x%lx, state = 0x%x\n", __func__,
(unsigned long)inode, (unsigned long)file, (unsigned long)inode, (unsigned long)file,
ibmvmc.state); ibmvmc.state);
session = kzalloc(sizeof(*session), GFP_KERNEL); session = kzalloc(sizeof(*session), GFP_KERNEL);
if (!session)
return -ENOMEM;
session->file = file; session->file = file;
file->private_data = session; file->private_data = session;
return rc; return 0;
} }
/** /**
......
...@@ -1187,9 +1187,15 @@ int mei_hbm_dispatch(struct mei_device *dev, struct mei_msg_hdr *hdr) ...@@ -1187,9 +1187,15 @@ int mei_hbm_dispatch(struct mei_device *dev, struct mei_msg_hdr *hdr)
dma_setup_res = (struct hbm_dma_setup_response *)mei_msg; dma_setup_res = (struct hbm_dma_setup_response *)mei_msg;
if (dma_setup_res->status) { if (dma_setup_res->status) {
dev_info(dev->dev, "hbm: dma setup response: failure = %d %s\n", u8 status = dma_setup_res->status;
dma_setup_res->status,
mei_hbm_status_str(dma_setup_res->status)); if (status == MEI_HBMS_NOT_ALLOWED) {
dev_dbg(dev->dev, "hbm: dma setup not allowed\n");
} else {
dev_info(dev->dev, "hbm: dma setup response: failure = %d %s\n",
status,
mei_hbm_status_str(status));
}
dev->hbm_f_dr_supported = 0; dev->hbm_f_dr_supported = 0;
mei_dmam_ring_free(dev); mei_dmam_ring_free(dev);
} }
......
...@@ -127,6 +127,8 @@ ...@@ -127,6 +127,8 @@
#define MEI_DEV_ID_BXT_M 0x1A9A /* Broxton M */ #define MEI_DEV_ID_BXT_M 0x1A9A /* Broxton M */
#define MEI_DEV_ID_APL_I 0x5A9A /* Apollo Lake I */ #define MEI_DEV_ID_APL_I 0x5A9A /* Apollo Lake I */
#define MEI_DEV_ID_DNV_IE 0x19E5 /* Denverton IE */
#define MEI_DEV_ID_GLK 0x319A /* Gemini Lake */ #define MEI_DEV_ID_GLK 0x319A /* Gemini Lake */
#define MEI_DEV_ID_KBP 0xA2BA /* Kaby Point */ #define MEI_DEV_ID_KBP 0xA2BA /* Kaby Point */
......
...@@ -88,11 +88,13 @@ static const struct pci_device_id mei_me_pci_tbl[] = { ...@@ -88,11 +88,13 @@ static const struct pci_device_id mei_me_pci_tbl[] = {
{MEI_PCI_DEVICE(MEI_DEV_ID_SPT_2, MEI_ME_PCH8_CFG)}, {MEI_PCI_DEVICE(MEI_DEV_ID_SPT_2, MEI_ME_PCH8_CFG)},
{MEI_PCI_DEVICE(MEI_DEV_ID_SPT_H, MEI_ME_PCH8_SPS_CFG)}, {MEI_PCI_DEVICE(MEI_DEV_ID_SPT_H, MEI_ME_PCH8_SPS_CFG)},
{MEI_PCI_DEVICE(MEI_DEV_ID_SPT_H_2, MEI_ME_PCH8_SPS_CFG)}, {MEI_PCI_DEVICE(MEI_DEV_ID_SPT_H_2, MEI_ME_PCH8_SPS_CFG)},
{MEI_PCI_DEVICE(MEI_DEV_ID_LBG, MEI_ME_PCH8_CFG)}, {MEI_PCI_DEVICE(MEI_DEV_ID_LBG, MEI_ME_PCH12_CFG)},
{MEI_PCI_DEVICE(MEI_DEV_ID_BXT_M, MEI_ME_PCH8_CFG)}, {MEI_PCI_DEVICE(MEI_DEV_ID_BXT_M, MEI_ME_PCH8_CFG)},
{MEI_PCI_DEVICE(MEI_DEV_ID_APL_I, MEI_ME_PCH8_CFG)}, {MEI_PCI_DEVICE(MEI_DEV_ID_APL_I, MEI_ME_PCH8_CFG)},
{MEI_PCI_DEVICE(MEI_DEV_ID_DNV_IE, MEI_ME_PCH8_CFG)},
{MEI_PCI_DEVICE(MEI_DEV_ID_GLK, MEI_ME_PCH8_CFG)}, {MEI_PCI_DEVICE(MEI_DEV_ID_GLK, MEI_ME_PCH8_CFG)},
{MEI_PCI_DEVICE(MEI_DEV_ID_KBP, MEI_ME_PCH8_CFG)}, {MEI_PCI_DEVICE(MEI_DEV_ID_KBP, MEI_ME_PCH8_CFG)},
......
...@@ -70,8 +70,12 @@ pvpanic_walk_resources(struct acpi_resource *res, void *context) ...@@ -70,8 +70,12 @@ pvpanic_walk_resources(struct acpi_resource *res, void *context)
struct resource r; struct resource r;
if (acpi_dev_resource_io(res, &r)) { if (acpi_dev_resource_io(res, &r)) {
#ifdef CONFIG_HAS_IOPORT_MAP
base = ioport_map(r.start, resource_size(&r)); base = ioport_map(r.start, resource_size(&r));
return AE_OK; return AE_OK;
#else
return AE_ERROR;
#endif
} else if (acpi_dev_resource_memory(res, &r)) { } else if (acpi_dev_resource_memory(res, &r)) {
base = ioremap(r.start, resource_size(&r)); base = ioremap(r.start, resource_size(&r));
return AE_OK; return AE_OK;
......
...@@ -1159,8 +1159,9 @@ struct hv_ring_buffer_debug_info { ...@@ -1159,8 +1159,9 @@ struct hv_ring_buffer_debug_info {
u32 bytes_avail_towrite; u32 bytes_avail_towrite;
}; };
void hv_ringbuffer_get_debuginfo(const struct hv_ring_buffer_info *ring_info,
struct hv_ring_buffer_debug_info *debug_info); int hv_ringbuffer_get_debuginfo(const struct hv_ring_buffer_info *ring_info,
struct hv_ring_buffer_debug_info *debug_info);
/* Vmbus interface */ /* Vmbus interface */
#define vmbus_driver_register(driver) \ #define vmbus_driver_register(driver) \
......
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
* *
*/ */
#ifndef _UAPI_LINUX_BINDER_CTL_H #ifndef _UAPI_LINUX_BINDERFS_H
#define _UAPI_LINUX_BINDER_CTL_H #define _UAPI_LINUX_BINDERFS_H
#include <linux/android/binder.h> #include <linux/android/binder.h>
#include <linux/types.h> #include <linux/types.h>
...@@ -22,8 +22,8 @@ ...@@ -22,8 +22,8 @@
*/ */
struct binderfs_device { struct binderfs_device {
char name[BINDERFS_MAX_NAME + 1]; char name[BINDERFS_MAX_NAME + 1];
__u8 major; __u32 major;
__u8 minor; __u32 minor;
}; };
/** /**
...@@ -31,5 +31,5 @@ struct binderfs_device { ...@@ -31,5 +31,5 @@ struct binderfs_device {
*/ */
#define BINDER_CTL_ADD _IOWR('b', 1, struct binderfs_device) #define BINDER_CTL_ADD _IOWR('b', 1, struct binderfs_device)
#endif /* _UAPI_LINUX_BINDER_CTL_H */ #endif /* _UAPI_LINUX_BINDERFS_H */
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