Merge '4.14.330' of https://android.googlesource.com/kernel/common into lineage-20
Change-Id: Ib3bdf06dafb3f348f50735562f21c9303ee49e5a
This commit is contained in:
2
Makefile
2
Makefile
@@ -1,7 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
VERSION = 4
|
||||
PATCHLEVEL = 14
|
||||
SUBLEVEL = 329
|
||||
SUBLEVEL = 330
|
||||
EXTRAVERSION =
|
||||
NAME = Petit Gorille
|
||||
|
||||
|
||||
@@ -82,14 +82,12 @@
|
||||
};
|
||||
};
|
||||
|
||||
regulators {
|
||||
vsdcc_fixed: vsdcc-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "SDCC Power";
|
||||
regulator-min-microvolt = <2700000>;
|
||||
regulator-max-microvolt = <2700000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
vsdcc_fixed: vsdcc-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "SDCC Power";
|
||||
regulator-min-microvolt = <2700000>;
|
||||
regulator-max-microvolt = <2700000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
soc: soc {
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
ENTRY(mmioset)
|
||||
ENTRY(memset)
|
||||
UNWIND( .fnstart )
|
||||
and r1, r1, #255 @ cast to unsigned char
|
||||
ands r3, r0, #3 @ 1 unaligned?
|
||||
mov ip, r0 @ preserve r0 as return value
|
||||
bne 6f @ 1
|
||||
|
||||
@@ -29,6 +29,17 @@ config STACK_DEBUG
|
||||
every function call and will therefore incur a major
|
||||
performance hit. Most users should say N.
|
||||
|
||||
config EARLY_PRINTK
|
||||
bool "Early printk"
|
||||
depends on SH_STANDARD_BIOS
|
||||
help
|
||||
Say Y here to redirect kernel printk messages to the serial port
|
||||
used by the SH-IPL bootloader, starting very early in the boot
|
||||
process and ending when the kernel's serial console is initialised.
|
||||
This option is only useful while porting the kernel to a new machine,
|
||||
when the kernel may crash or hang before the serial console is
|
||||
initialised. If unsure, say N.
|
||||
|
||||
config 4KSTACKS
|
||||
bool "Use 4Kb for kernel stacks instead of 8Kb"
|
||||
depends on DEBUG_KERNEL && (MMU || BROKEN) && !PAGE_SIZE_64KB
|
||||
|
||||
@@ -164,8 +164,8 @@ static int create_pnp_modalias(struct acpi_device *acpi_dev, char *modalias,
|
||||
return 0;
|
||||
|
||||
len = snprintf(modalias, size, "acpi:");
|
||||
if (len <= 0)
|
||||
return len;
|
||||
if (len >= size)
|
||||
return -ENOMEM;
|
||||
|
||||
size -= len;
|
||||
|
||||
@@ -218,8 +218,10 @@ static int create_of_modalias(struct acpi_device *acpi_dev, char *modalias,
|
||||
len = snprintf(modalias, size, "of:N%sT", (char *)buf.pointer);
|
||||
ACPI_FREE(buf.pointer);
|
||||
|
||||
if (len <= 0)
|
||||
return len;
|
||||
if (len >= size)
|
||||
return -ENOMEM;
|
||||
|
||||
size -= len;
|
||||
|
||||
of_compatible = acpi_dev->data.of_compatible;
|
||||
if (of_compatible->type == ACPI_TYPE_PACKAGE) {
|
||||
|
||||
@@ -58,7 +58,8 @@ struct amd_geode_priv {
|
||||
|
||||
static int geode_rng_data_read(struct hwrng *rng, u32 *data)
|
||||
{
|
||||
void __iomem *mem = (void __iomem *)rng->priv;
|
||||
struct amd_geode_priv *priv = (struct amd_geode_priv *)rng->priv;
|
||||
void __iomem *mem = priv->membase;
|
||||
|
||||
*data = readl(mem + GEODE_RNG_DATA_REG);
|
||||
|
||||
@@ -67,7 +68,8 @@ static int geode_rng_data_read(struct hwrng *rng, u32 *data)
|
||||
|
||||
static int geode_rng_data_present(struct hwrng *rng, int wait)
|
||||
{
|
||||
void __iomem *mem = (void __iomem *)rng->priv;
|
||||
struct amd_geode_priv *priv = (struct amd_geode_priv *)rng->priv;
|
||||
void __iomem *mem = priv->membase;
|
||||
int data, i;
|
||||
|
||||
for (i = 0; i < 20; i++) {
|
||||
|
||||
@@ -285,12 +285,13 @@ static void __init of_pll_div_clk_init(struct device_node *node)
|
||||
|
||||
clk = clk_register_divider(NULL, clk_name, parent_name, 0, reg, shift,
|
||||
mask, 0, NULL);
|
||||
if (clk) {
|
||||
of_clk_add_provider(node, of_clk_src_simple_get, clk);
|
||||
} else {
|
||||
if (IS_ERR(clk)) {
|
||||
pr_err("%s: error registering divider %s\n", __func__, clk_name);
|
||||
iounmap(reg);
|
||||
return;
|
||||
}
|
||||
|
||||
of_clk_add_provider(node, of_clk_src_simple_get, clk);
|
||||
}
|
||||
CLK_OF_DECLARE(pll_divider_clock, "ti,keystone,pll-divider-clock", of_pll_div_clk_init);
|
||||
|
||||
@@ -332,9 +333,11 @@ static void __init of_pll_mux_clk_init(struct device_node *node)
|
||||
clk = clk_register_mux(NULL, clk_name, (const char **)&parents,
|
||||
ARRAY_SIZE(parents) , 0, reg, shift, mask,
|
||||
0, NULL);
|
||||
if (clk)
|
||||
of_clk_add_provider(node, of_clk_src_simple_get, clk);
|
||||
else
|
||||
if (IS_ERR(clk)) {
|
||||
pr_err("%s: error registering mux %s\n", __func__, clk_name);
|
||||
return;
|
||||
}
|
||||
|
||||
of_clk_add_provider(node, of_clk_src_simple_get, clk);
|
||||
}
|
||||
CLK_OF_DECLARE(pll_mux_clock, "ti,keystone,pll-mux-clock", of_pll_mux_clk_init);
|
||||
|
||||
@@ -690,6 +690,8 @@ static int mtk_topckgen_init(struct platform_device *pdev)
|
||||
return PTR_ERR(base);
|
||||
|
||||
clk_data = mtk_alloc_clk_data(CLK_TOP_NR);
|
||||
if (!clk_data)
|
||||
return -ENOMEM;
|
||||
|
||||
mtk_clk_register_fixed_clks(top_fixed_clks, ARRAY_SIZE(top_fixed_clks),
|
||||
clk_data);
|
||||
@@ -757,6 +759,8 @@ static void mtk_infrasys_init_early(struct device_node *node)
|
||||
|
||||
if (!infra_clk_data) {
|
||||
infra_clk_data = mtk_alloc_clk_data(CLK_INFRA_NR);
|
||||
if (!infra_clk_data)
|
||||
return;
|
||||
|
||||
for (i = 0; i < CLK_INFRA_NR; i++)
|
||||
infra_clk_data->clks[i] = ERR_PTR(-EPROBE_DEFER);
|
||||
@@ -783,6 +787,8 @@ static int mtk_infrasys_init(struct platform_device *pdev)
|
||||
|
||||
if (!infra_clk_data) {
|
||||
infra_clk_data = mtk_alloc_clk_data(CLK_INFRA_NR);
|
||||
if (!infra_clk_data)
|
||||
return -ENOMEM;
|
||||
} else {
|
||||
for (i = 0; i < CLK_INFRA_NR; i++) {
|
||||
if (infra_clk_data->clks[i] == ERR_PTR(-EPROBE_DEFER))
|
||||
@@ -911,6 +917,8 @@ static int mtk_pericfg_init(struct platform_device *pdev)
|
||||
return PTR_ERR(base);
|
||||
|
||||
clk_data = mtk_alloc_clk_data(CLK_PERI_NR);
|
||||
if (!clk_data)
|
||||
return -ENOMEM;
|
||||
|
||||
mtk_clk_register_gates(node, peri_clks, ARRAY_SIZE(peri_clks),
|
||||
clk_data);
|
||||
|
||||
@@ -396,6 +396,8 @@ static int mtk_topckgen_init(struct platform_device *pdev)
|
||||
return PTR_ERR(base);
|
||||
|
||||
clk_data = mtk_alloc_clk_data(CLK_TOP_NR);
|
||||
if (!clk_data)
|
||||
return -ENOMEM;
|
||||
|
||||
mtk_clk_register_factors(top_fixed_divs, ARRAY_SIZE(top_fixed_divs),
|
||||
clk_data);
|
||||
@@ -554,6 +556,8 @@ static void mtk_infrasys_init_early(struct device_node *node)
|
||||
|
||||
if (!infra_clk_data) {
|
||||
infra_clk_data = mtk_alloc_clk_data(CLK_INFRA_NR);
|
||||
if (!infra_clk_data)
|
||||
return;
|
||||
|
||||
for (i = 0; i < CLK_INFRA_NR; i++)
|
||||
infra_clk_data->clks[i] = ERR_PTR(-EPROBE_DEFER);
|
||||
@@ -578,6 +582,8 @@ static int mtk_infrasys_init(struct platform_device *pdev)
|
||||
|
||||
if (!infra_clk_data) {
|
||||
infra_clk_data = mtk_alloc_clk_data(CLK_INFRA_NR);
|
||||
if (!infra_clk_data)
|
||||
return -ENOMEM;
|
||||
} else {
|
||||
for (i = 0; i < CLK_INFRA_NR; i++) {
|
||||
if (infra_clk_data->clks[i] == ERR_PTR(-EPROBE_DEFER))
|
||||
|
||||
@@ -139,17 +139,11 @@ static int clk_rcg2_set_parent(struct clk_hw *hw, u8 index)
|
||||
static unsigned long
|
||||
calc_rate(unsigned long rate, u32 m, u32 n, u32 mode, u32 hid_div)
|
||||
{
|
||||
if (hid_div) {
|
||||
rate *= 2;
|
||||
rate /= hid_div + 1;
|
||||
}
|
||||
if (hid_div)
|
||||
rate = mult_frac(rate, 2, hid_div + 1);
|
||||
|
||||
if (mode) {
|
||||
u64 tmp = rate;
|
||||
tmp *= m;
|
||||
do_div(tmp, n);
|
||||
rate = tmp;
|
||||
}
|
||||
if (mode)
|
||||
rate = mult_frac(rate, m, n);
|
||||
|
||||
return rate;
|
||||
}
|
||||
|
||||
@@ -2298,7 +2298,7 @@ static int edma_probe(struct platform_device *pdev)
|
||||
if (irq < 0 && node)
|
||||
irq = irq_of_parse_and_map(node, 0);
|
||||
|
||||
if (irq >= 0) {
|
||||
if (irq > 0) {
|
||||
irq_name = devm_kasprintf(dev, GFP_KERNEL, "%s_ccint",
|
||||
dev_name(dev));
|
||||
ret = devm_request_irq(dev, irq, dma_irq_handler, 0, irq_name,
|
||||
@@ -2314,7 +2314,7 @@ static int edma_probe(struct platform_device *pdev)
|
||||
if (irq < 0 && node)
|
||||
irq = irq_of_parse_and_map(node, 2);
|
||||
|
||||
if (irq >= 0) {
|
||||
if (irq > 0) {
|
||||
irq_name = devm_kasprintf(dev, GFP_KERNEL, "%s_ccerrint",
|
||||
dev_name(dev));
|
||||
ret = devm_request_irq(dev, irq, dma_ccerr_handler, 0, irq_name,
|
||||
|
||||
@@ -768,7 +768,6 @@ static void pxad_free_desc(struct virt_dma_desc *vd)
|
||||
dma_addr_t dma;
|
||||
struct pxad_desc_sw *sw_desc = to_pxad_sw_desc(vd);
|
||||
|
||||
BUG_ON(sw_desc->nb_desc == 0);
|
||||
for (i = sw_desc->nb_desc - 1; i >= 0; i--) {
|
||||
if (i > 0)
|
||||
dma = sw_desc->hw_desc[i - 1]->ddadr;
|
||||
|
||||
@@ -213,19 +213,6 @@ static int ti_sci_debugfs_create(struct platform_device *pdev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* ti_sci_debugfs_destroy() - clean up log debug file
|
||||
* @pdev: platform device pointer
|
||||
* @info: Pointer to SCI entity information
|
||||
*/
|
||||
static void ti_sci_debugfs_destroy(struct platform_device *pdev,
|
||||
struct ti_sci_info *info)
|
||||
{
|
||||
if (IS_ERR(info->debug_region))
|
||||
return;
|
||||
|
||||
debugfs_remove(info->d);
|
||||
}
|
||||
#else /* CONFIG_DEBUG_FS */
|
||||
static inline int ti_sci_debugfs_create(struct platform_device *dev,
|
||||
struct ti_sci_info *info)
|
||||
@@ -1945,43 +1932,12 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int ti_sci_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct ti_sci_info *info;
|
||||
struct device *dev = &pdev->dev;
|
||||
int ret = 0;
|
||||
|
||||
of_platform_depopulate(dev);
|
||||
|
||||
info = platform_get_drvdata(pdev);
|
||||
|
||||
if (info->nb.notifier_call)
|
||||
unregister_restart_handler(&info->nb);
|
||||
|
||||
mutex_lock(&ti_sci_list_mutex);
|
||||
if (info->users)
|
||||
ret = -EBUSY;
|
||||
else
|
||||
list_del(&info->node);
|
||||
mutex_unlock(&ti_sci_list_mutex);
|
||||
|
||||
if (!ret) {
|
||||
ti_sci_debugfs_destroy(pdev, info);
|
||||
|
||||
/* Safe to free channels since no more users */
|
||||
mbox_free_channel(info->chan_tx);
|
||||
mbox_free_channel(info->chan_rx);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static struct platform_driver ti_sci_driver = {
|
||||
.probe = ti_sci_probe,
|
||||
.remove = ti_sci_remove,
|
||||
.driver = {
|
||||
.name = "ti-sci",
|
||||
.of_match_table = of_match_ptr(ti_sci_of_match),
|
||||
.suppress_bind_attrs = true,
|
||||
},
|
||||
};
|
||||
module_platform_driver(ti_sci_driver);
|
||||
|
||||
@@ -4814,14 +4814,15 @@ restart_ih:
|
||||
break;
|
||||
case 44: /* hdmi */
|
||||
afmt_idx = src_data;
|
||||
if (!(afmt_status[afmt_idx] & AFMT_AZ_FORMAT_WTRIG))
|
||||
DRM_DEBUG("IH: IH event w/o asserted irq bit?\n");
|
||||
|
||||
if (afmt_idx > 5) {
|
||||
DRM_ERROR("Unhandled interrupt: %d %d\n",
|
||||
src_id, src_data);
|
||||
break;
|
||||
}
|
||||
|
||||
if (!(afmt_status[afmt_idx] & AFMT_AZ_FORMAT_WTRIG))
|
||||
DRM_DEBUG("IH: IH event w/o asserted irq bit?\n");
|
||||
|
||||
afmt_status[afmt_idx] &= ~AFMT_AZ_FORMAT_WTRIG;
|
||||
queue_hdmi = true;
|
||||
DRM_DEBUG("IH: HDMI%d\n", afmt_idx + 1);
|
||||
|
||||
@@ -1173,6 +1173,7 @@ static int cdn_dp_probe(struct platform_device *pdev)
|
||||
struct cdn_dp_device *dp;
|
||||
struct extcon_dev *extcon;
|
||||
struct phy *phy;
|
||||
int ret;
|
||||
int i;
|
||||
|
||||
dp = devm_kzalloc(dev, sizeof(*dp), GFP_KERNEL);
|
||||
@@ -1213,9 +1214,19 @@ static int cdn_dp_probe(struct platform_device *pdev)
|
||||
mutex_init(&dp->lock);
|
||||
dev_set_drvdata(dev, dp);
|
||||
|
||||
cdn_dp_audio_codec_init(dp, dev);
|
||||
ret = cdn_dp_audio_codec_init(dp, dev);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return component_add(dev, &cdn_dp_component_ops);
|
||||
ret = component_add(dev, &cdn_dp_component_ops);
|
||||
if (ret)
|
||||
goto err_audio_deinit;
|
||||
|
||||
return 0;
|
||||
|
||||
err_audio_deinit:
|
||||
platform_device_unregister(dp->audio_pdev);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int cdn_dp_remove(struct platform_device *pdev)
|
||||
|
||||
@@ -1071,7 +1071,8 @@ static struct drm_crtc_state *vop_crtc_duplicate_state(struct drm_crtc *crtc)
|
||||
if (WARN_ON(!crtc->state))
|
||||
return NULL;
|
||||
|
||||
rockchip_state = kzalloc(sizeof(*rockchip_state), GFP_KERNEL);
|
||||
rockchip_state = kmemdup(to_rockchip_crtc_state(crtc->state),
|
||||
sizeof(*rockchip_state), GFP_KERNEL);
|
||||
if (!rockchip_state)
|
||||
return NULL;
|
||||
|
||||
|
||||
@@ -152,7 +152,7 @@ int read_hfi1_efi_var(struct hfi1_devdata *dd, const char *kind,
|
||||
unsigned long *size, void **return_data)
|
||||
{
|
||||
char prefix_name[64];
|
||||
char name[64];
|
||||
char name[128];
|
||||
int result;
|
||||
int i;
|
||||
|
||||
|
||||
@@ -1142,12 +1142,12 @@ int s3c_camif_register_video_node(struct camif_dev *camif, int idx)
|
||||
|
||||
ret = vb2_queue_init(q);
|
||||
if (ret)
|
||||
goto err_vd_rel;
|
||||
return ret;
|
||||
|
||||
vp->pad.flags = MEDIA_PAD_FL_SINK;
|
||||
ret = media_entity_pads_init(&vfd->entity, 1, &vp->pad);
|
||||
if (ret)
|
||||
goto err_vd_rel;
|
||||
return ret;
|
||||
|
||||
video_set_drvdata(vfd, vp);
|
||||
|
||||
@@ -1179,8 +1179,6 @@ err_ctrlh_free:
|
||||
v4l2_ctrl_handler_free(&vp->ctrl_handler);
|
||||
err_me_cleanup:
|
||||
media_entity_cleanup(&vfd->entity);
|
||||
err_vd_rel:
|
||||
video_device_release(vfd);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -337,8 +337,10 @@ static int af9035_i2c_master_xfer(struct i2c_adapter *adap,
|
||||
ret = -EOPNOTSUPP;
|
||||
} else if ((msg[0].addr == state->af9033_i2c_addr[0]) ||
|
||||
(msg[0].addr == state->af9033_i2c_addr[1])) {
|
||||
if (msg[0].len < 3 || msg[1].len < 1)
|
||||
return -EOPNOTSUPP;
|
||||
if (msg[0].len < 3 || msg[1].len < 1) {
|
||||
ret = -EOPNOTSUPP;
|
||||
goto unlock;
|
||||
}
|
||||
/* demod access via firmware interface */
|
||||
reg = msg[0].buf[0] << 16 | msg[0].buf[1] << 8 |
|
||||
msg[0].buf[2];
|
||||
@@ -398,8 +400,10 @@ static int af9035_i2c_master_xfer(struct i2c_adapter *adap,
|
||||
ret = -EOPNOTSUPP;
|
||||
} else if ((msg[0].addr == state->af9033_i2c_addr[0]) ||
|
||||
(msg[0].addr == state->af9033_i2c_addr[1])) {
|
||||
if (msg[0].len < 3)
|
||||
return -EOPNOTSUPP;
|
||||
if (msg[0].len < 3) {
|
||||
ret = -EOPNOTSUPP;
|
||||
goto unlock;
|
||||
}
|
||||
/* demod access via firmware interface */
|
||||
reg = msg[0].buf[0] << 16 | msg[0].buf[1] << 8 |
|
||||
msg[0].buf[2];
|
||||
@@ -474,6 +478,7 @@ static int af9035_i2c_master_xfer(struct i2c_adapter *adap,
|
||||
ret = -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
unlock:
|
||||
mutex_unlock(&d->i2c_mutex);
|
||||
|
||||
if (ret < 0)
|
||||
|
||||
@@ -804,7 +804,6 @@ out_stop_rx:
|
||||
dln2_stop_rx_urbs(dln2);
|
||||
|
||||
out_free:
|
||||
usb_put_dev(dln2->usb_dev);
|
||||
dln2_free(dln2);
|
||||
|
||||
return ret;
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <linux/skbuff.h>
|
||||
|
||||
#include <linux/ti_wilink_st.h>
|
||||
#include <linux/netdevice.h>
|
||||
|
||||
extern void st_kim_recv(void *, const unsigned char *, long);
|
||||
void st_int_recv(void *, const unsigned char *, long);
|
||||
@@ -436,7 +437,7 @@ static void st_int_enqueue(struct st_data_s *st_gdata, struct sk_buff *skb)
|
||||
case ST_LL_AWAKE_TO_ASLEEP:
|
||||
pr_err("ST LL is illegal state(%ld),"
|
||||
"purging received skb.", st_ll_getstate(st_gdata));
|
||||
kfree_skb(skb);
|
||||
dev_kfree_skb_irq(skb);
|
||||
break;
|
||||
case ST_LL_ASLEEP:
|
||||
skb_queue_tail(&st_gdata->tx_waitq, skb);
|
||||
@@ -445,7 +446,7 @@ static void st_int_enqueue(struct st_data_s *st_gdata, struct sk_buff *skb)
|
||||
default:
|
||||
pr_err("ST LL is illegal state(%ld),"
|
||||
"purging received skb.", st_ll_getstate(st_gdata));
|
||||
kfree_skb(skb);
|
||||
dev_kfree_skb_irq(skb);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -499,7 +500,7 @@ void st_tx_wakeup(struct st_data_s *st_data)
|
||||
spin_unlock_irqrestore(&st_data->lock, flags);
|
||||
break;
|
||||
}
|
||||
kfree_skb(skb);
|
||||
dev_kfree_skb_irq(skb);
|
||||
spin_unlock_irqrestore(&st_data->lock, flags);
|
||||
}
|
||||
/* if wake-up is set in another context- restart sending */
|
||||
|
||||
@@ -103,7 +103,7 @@ static int mmc_decode_cid(struct mmc_card *card)
|
||||
case 3: /* MMC v3.1 - v3.3 */
|
||||
case 4: /* MMC v4 */
|
||||
card->cid.manfid = UNSTUFF_BITS(resp, 120, 8);
|
||||
card->cid.oemid = UNSTUFF_BITS(resp, 104, 8);
|
||||
card->cid.oemid = UNSTUFF_BITS(resp, 104, 16);
|
||||
card->cid.prod_name[0] = UNSTUFF_BITS(resp, 96, 8);
|
||||
card->cid.prod_name[1] = UNSTUFF_BITS(resp, 88, 8);
|
||||
card->cid.prod_name[2] = UNSTUFF_BITS(resp, 80, 8);
|
||||
|
||||
@@ -18167,7 +18167,8 @@ static void tg3_shutdown(struct pci_dev *pdev)
|
||||
if (netif_running(dev))
|
||||
dev_close(dev);
|
||||
|
||||
tg3_power_down(tp);
|
||||
if (system_state == SYSTEM_POWER_OFF)
|
||||
tg3_power_down(tp);
|
||||
|
||||
rtnl_unlock();
|
||||
|
||||
|
||||
@@ -11882,11 +11882,15 @@ static void i40e_remove(struct pci_dev *pdev)
|
||||
i40e_switch_branch_release(pf->veb[i]);
|
||||
}
|
||||
|
||||
/* Now we can shutdown the PF's VSI, just before we kill
|
||||
/* Now we can shutdown the PF's VSIs, just before we kill
|
||||
* adminq and hmc.
|
||||
*/
|
||||
if (pf->vsi[pf->lan_vsi])
|
||||
i40e_vsi_release(pf->vsi[pf->lan_vsi]);
|
||||
for (i = pf->num_alloc_vsi; i--;)
|
||||
if (pf->vsi[i]) {
|
||||
i40e_vsi_close(pf->vsi[i]);
|
||||
i40e_vsi_release(pf->vsi[i]);
|
||||
pf->vsi[i] = NULL;
|
||||
}
|
||||
|
||||
/* remove attached clients */
|
||||
if (pf->flags & I40E_FLAG_IWARP_ENABLED) {
|
||||
|
||||
@@ -827,7 +827,7 @@ static void rtl88e_dm_check_edca_turbo(struct ieee80211_hw *hw)
|
||||
}
|
||||
|
||||
if (rtlpriv->btcoexist.bt_edca_dl != 0) {
|
||||
edca_be_ul = rtlpriv->btcoexist.bt_edca_dl;
|
||||
edca_be_dl = rtlpriv->btcoexist.bt_edca_dl;
|
||||
bt_change_edca = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -663,7 +663,7 @@ static void rtl92c_dm_check_edca_turbo(struct ieee80211_hw *hw)
|
||||
}
|
||||
|
||||
if (rtlpriv->btcoexist.bt_edca_dl != 0) {
|
||||
edca_be_ul = rtlpriv->btcoexist.bt_edca_dl;
|
||||
edca_be_dl = rtlpriv->btcoexist.bt_edca_dl;
|
||||
bt_change_edca = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -592,7 +592,7 @@ static void rtl8723e_dm_check_edca_turbo(struct ieee80211_hw *hw)
|
||||
}
|
||||
|
||||
if (rtlpriv->btcoexist.bt_edca_dl != 0) {
|
||||
edca_be_ul = rtlpriv->btcoexist.bt_edca_dl;
|
||||
edca_be_dl = rtlpriv->btcoexist.bt_edca_dl;
|
||||
bt_change_edca = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -608,6 +608,7 @@ static int pccardd(void *__skt)
|
||||
dev_warn(&skt->dev, "PCMCIA: unable to register socket\n");
|
||||
skt->thread = NULL;
|
||||
complete(&skt->thread_done);
|
||||
put_device(&skt->dev);
|
||||
return 0;
|
||||
}
|
||||
ret = pccard_sysfs_add_socket(&skt->dev);
|
||||
|
||||
@@ -521,9 +521,6 @@ static struct pcmcia_device *pcmcia_device_add(struct pcmcia_socket *s,
|
||||
/* by default don't allow DMA */
|
||||
p_dev->dma_mask = DMA_MASK_NONE;
|
||||
p_dev->dev.dma_mask = &p_dev->dma_mask;
|
||||
dev_set_name(&p_dev->dev, "%d.%d", p_dev->socket->sock, p_dev->device_no);
|
||||
if (!dev_name(&p_dev->dev))
|
||||
goto err_free;
|
||||
p_dev->devname = kasprintf(GFP_KERNEL, "pcmcia%s", dev_name(&p_dev->dev));
|
||||
if (!p_dev->devname)
|
||||
goto err_free;
|
||||
@@ -581,8 +578,15 @@ static struct pcmcia_device *pcmcia_device_add(struct pcmcia_socket *s,
|
||||
|
||||
pcmcia_device_query(p_dev);
|
||||
|
||||
if (device_register(&p_dev->dev))
|
||||
goto err_unreg;
|
||||
dev_set_name(&p_dev->dev, "%d.%d", p_dev->socket->sock, p_dev->device_no);
|
||||
if (device_register(&p_dev->dev)) {
|
||||
mutex_lock(&s->ops_mutex);
|
||||
list_del(&p_dev->socket_device_list);
|
||||
s->device_count--;
|
||||
mutex_unlock(&s->ops_mutex);
|
||||
put_device(&p_dev->dev);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return p_dev;
|
||||
|
||||
|
||||
@@ -953,8 +953,8 @@ static int parse_wdg(struct device *wmi_bus_dev, struct acpi_device *device)
|
||||
struct wmi_block *wblock, *next;
|
||||
union acpi_object *obj;
|
||||
acpi_status status;
|
||||
int retval = 0;
|
||||
u32 i, total;
|
||||
int retval;
|
||||
|
||||
status = acpi_evaluate_object(device->handle, "_WDG", NULL, &out);
|
||||
if (ACPI_FAILURE(status))
|
||||
@@ -965,8 +965,8 @@ static int parse_wdg(struct device *wmi_bus_dev, struct acpi_device *device)
|
||||
return -ENXIO;
|
||||
|
||||
if (obj->type != ACPI_TYPE_BUFFER) {
|
||||
retval = -ENXIO;
|
||||
goto out_free_pointer;
|
||||
kfree(obj);
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
gblock = (const struct guid_block *)obj->buffer.pointer;
|
||||
@@ -987,8 +987,8 @@ static int parse_wdg(struct device *wmi_bus_dev, struct acpi_device *device)
|
||||
|
||||
wblock = kzalloc(sizeof(struct wmi_block), GFP_KERNEL);
|
||||
if (!wblock) {
|
||||
retval = -ENOMEM;
|
||||
break;
|
||||
dev_err(wmi_bus_dev, "Failed to allocate %pUL\n", &gblock[i].guid);
|
||||
continue;
|
||||
}
|
||||
|
||||
wblock->acpi_device = device;
|
||||
@@ -1027,9 +1027,9 @@ static int parse_wdg(struct device *wmi_bus_dev, struct acpi_device *device)
|
||||
}
|
||||
}
|
||||
|
||||
out_free_pointer:
|
||||
kfree(out.pointer);
|
||||
return retval;
|
||||
kfree(obj);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -307,7 +307,7 @@ static int brcmstb_pwm_suspend(struct device *dev)
|
||||
{
|
||||
struct brcmstb_pwm *p = dev_get_drvdata(dev);
|
||||
|
||||
clk_disable(p->clk);
|
||||
clk_disable_unprepare(p->clk);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -316,7 +316,7 @@ static int brcmstb_pwm_resume(struct device *dev)
|
||||
{
|
||||
struct brcmstb_pwm *p = dev_get_drvdata(dev);
|
||||
|
||||
clk_enable(p->clk);
|
||||
clk_prepare_enable(p->clk);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -739,7 +739,8 @@ int thermal_zone_bind_cooling_device(struct thermal_zone_device *tz,
|
||||
if (result)
|
||||
goto release_ida;
|
||||
|
||||
sprintf(dev->attr_name, "cdev%d_trip_point", dev->id);
|
||||
snprintf(dev->attr_name, sizeof(dev->attr_name), "cdev%d_trip_point",
|
||||
dev->id);
|
||||
sysfs_attr_init(&dev->attr.attr);
|
||||
dev->attr.attr.name = dev->attr_name;
|
||||
dev->attr.attr.mode = 0444;
|
||||
@@ -748,7 +749,8 @@ int thermal_zone_bind_cooling_device(struct thermal_zone_device *tz,
|
||||
if (result)
|
||||
goto remove_symbol_link;
|
||||
|
||||
sprintf(dev->weight_attr_name, "cdev%d_weight", dev->id);
|
||||
snprintf(dev->weight_attr_name, sizeof(dev->weight_attr_name),
|
||||
"cdev%d_weight", dev->id);
|
||||
sysfs_attr_init(&dev->weight_attr.attr);
|
||||
dev->weight_attr.attr.name = dev->weight_attr_name;
|
||||
dev->weight_attr.attr.mode = S_IWUSR | S_IRUGO;
|
||||
|
||||
@@ -289,12 +289,7 @@ void disassociate_ctty(int on_exit)
|
||||
return;
|
||||
}
|
||||
|
||||
spin_lock_irq(¤t->sighand->siglock);
|
||||
put_pid(current->signal->tty_old_pgrp);
|
||||
current->signal->tty_old_pgrp = NULL;
|
||||
tty = tty_kref_get(current->signal->tty);
|
||||
spin_unlock_irq(¤t->sighand->siglock);
|
||||
|
||||
tty = get_current_tty();
|
||||
if (tty) {
|
||||
unsigned long flags;
|
||||
|
||||
@@ -309,6 +304,16 @@ void disassociate_ctty(int on_exit)
|
||||
tty_kref_put(tty);
|
||||
}
|
||||
|
||||
/* If tty->ctrl.pgrp is not NULL, it may be assigned to
|
||||
* current->signal->tty_old_pgrp in a race condition, and
|
||||
* cause pid memleak. Release current->signal->tty_old_pgrp
|
||||
* after tty->ctrl.pgrp set to NULL.
|
||||
*/
|
||||
spin_lock_irq(¤t->sighand->siglock);
|
||||
put_pid(current->signal->tty_old_pgrp);
|
||||
current->signal->tty_old_pgrp = NULL;
|
||||
spin_unlock_irq(¤t->sighand->siglock);
|
||||
|
||||
/* Now clear signal->tty under the lock */
|
||||
read_lock(&tasklist_lock);
|
||||
session_clear_tty(task_session(current));
|
||||
|
||||
@@ -4842,8 +4842,8 @@ fail3:
|
||||
if (qh_allocated && qh->channel && qh->channel->qh == qh)
|
||||
qh->channel->qh = NULL;
|
||||
fail2:
|
||||
spin_unlock_irqrestore(&hsotg->lock, flags);
|
||||
urb->hcpriv = NULL;
|
||||
spin_unlock_irqrestore(&hsotg->lock, flags);
|
||||
kfree(qtd);
|
||||
qtd = NULL;
|
||||
fail1:
|
||||
|
||||
@@ -511,8 +511,13 @@ static void stub_disconnect(struct usb_device *udev)
|
||||
/* release port */
|
||||
rc = usb_hub_release_port(udev->parent, udev->portnum,
|
||||
(struct usb_dev_state *) udev);
|
||||
if (rc) {
|
||||
dev_dbg(&udev->dev, "unable to release port\n");
|
||||
/*
|
||||
* NOTE: If a HUB disconnect triggered disconnect of the down stream
|
||||
* device usb_hub_release_port will return -ENODEV so we can safely ignore
|
||||
* that error here.
|
||||
*/
|
||||
if (rc && (rc != -ENODEV)) {
|
||||
dev_dbg(&udev->dev, "unable to release port (%i)\n", rc);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -489,7 +489,7 @@ static enum fsl_diu_monitor_port fsl_diu_name_to_port(const char *s)
|
||||
* Workaround for failed writing desc register of planes.
|
||||
* Needed with MPC5121 DIU rev 2.0 silicon.
|
||||
*/
|
||||
void wr_reg_wa(u32 *reg, u32 val)
|
||||
static void wr_reg_wa(u32 *reg, u32 val)
|
||||
{
|
||||
do {
|
||||
out_be32(reg, val);
|
||||
|
||||
@@ -1988,7 +1988,7 @@ static noinline int key_in_sk(struct btrfs_key *key,
|
||||
static noinline int copy_to_sk(struct btrfs_path *path,
|
||||
struct btrfs_key *key,
|
||||
struct btrfs_ioctl_search_key *sk,
|
||||
size_t *buf_size,
|
||||
u64 *buf_size,
|
||||
char __user *ubuf,
|
||||
unsigned long *sk_offset,
|
||||
int *num_found)
|
||||
@@ -2120,7 +2120,7 @@ out:
|
||||
|
||||
static noinline int search_ioctl(struct inode *inode,
|
||||
struct btrfs_ioctl_search_key *sk,
|
||||
size_t *buf_size,
|
||||
u64 *buf_size,
|
||||
char __user *ubuf)
|
||||
{
|
||||
struct btrfs_fs_info *info = btrfs_sb(inode->i_sb);
|
||||
@@ -2192,7 +2192,7 @@ static noinline int btrfs_ioctl_tree_search(struct file *file,
|
||||
struct btrfs_ioctl_search_key sk;
|
||||
struct inode *inode;
|
||||
int ret;
|
||||
size_t buf_size;
|
||||
u64 buf_size;
|
||||
|
||||
if (!capable(CAP_SYS_ADMIN))
|
||||
return -EPERM;
|
||||
@@ -2226,8 +2226,8 @@ static noinline int btrfs_ioctl_tree_search_v2(struct file *file,
|
||||
struct btrfs_ioctl_search_args_v2 args;
|
||||
struct inode *inode;
|
||||
int ret;
|
||||
size_t buf_size;
|
||||
const size_t buf_limit = SZ_16M;
|
||||
u64 buf_size;
|
||||
const u64 buf_limit = SZ_16M;
|
||||
|
||||
if (!capable(CAP_SYS_ADMIN))
|
||||
return -EPERM;
|
||||
|
||||
@@ -1002,6 +1002,11 @@ static int ext4_ext_insert_index(handle_t *handle, struct inode *inode,
|
||||
ix = curp->p_idx;
|
||||
}
|
||||
|
||||
if (unlikely(ix > EXT_MAX_INDEX(curp->p_hdr))) {
|
||||
EXT4_ERROR_INODE(inode, "ix > EXT_MAX_INDEX!");
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
|
||||
len = EXT_LAST_INDEX(curp->p_hdr) - ix + 1;
|
||||
BUG_ON(len < 0);
|
||||
if (len > 0) {
|
||||
@@ -1011,11 +1016,6 @@ static int ext4_ext_insert_index(handle_t *handle, struct inode *inode,
|
||||
memmove(ix + 1, ix, len * sizeof(struct ext4_extent_idx));
|
||||
}
|
||||
|
||||
if (unlikely(ix > EXT_MAX_INDEX(curp->p_hdr))) {
|
||||
EXT4_ERROR_INODE(inode, "ix > EXT_MAX_INDEX!");
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
|
||||
ix->ei_block = cpu_to_le32(logical);
|
||||
ext4_idx_store_pblock(ix, ptr);
|
||||
le16_add_cpu(&curp->p_hdr->eh_entries, 1);
|
||||
|
||||
@@ -612,9 +612,6 @@ int dccp_v4_conn_request(struct sock *sk, struct sk_buff *skb)
|
||||
if (dccp_parse_options(sk, dreq, skb))
|
||||
goto drop_and_free;
|
||||
|
||||
if (security_inet_conn_request(sk, skb, req))
|
||||
goto drop_and_free;
|
||||
|
||||
ireq = inet_rsk(req);
|
||||
sk_rcv_saddr_set(req_to_sk(req), ip_hdr(skb)->daddr);
|
||||
sk_daddr_set(req_to_sk(req), ip_hdr(skb)->saddr);
|
||||
@@ -622,6 +619,9 @@ int dccp_v4_conn_request(struct sock *sk, struct sk_buff *skb)
|
||||
ireq->ireq_family = AF_INET;
|
||||
ireq->ir_iif = sk->sk_bound_dev_if;
|
||||
|
||||
if (security_inet_conn_request(sk, skb, req))
|
||||
goto drop_and_free;
|
||||
|
||||
/*
|
||||
* Step 3: Process LISTEN state
|
||||
*
|
||||
|
||||
@@ -349,15 +349,15 @@ static int dccp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
|
||||
if (dccp_parse_options(sk, dreq, skb))
|
||||
goto drop_and_free;
|
||||
|
||||
if (security_inet_conn_request(sk, skb, req))
|
||||
goto drop_and_free;
|
||||
|
||||
ireq = inet_rsk(req);
|
||||
ireq->ir_v6_rmt_addr = ipv6_hdr(skb)->saddr;
|
||||
ireq->ir_v6_loc_addr = ipv6_hdr(skb)->daddr;
|
||||
ireq->ireq_family = AF_INET6;
|
||||
ireq->ir_mark = inet_request_mark(sk, skb);
|
||||
|
||||
if (security_inet_conn_request(sk, skb, req))
|
||||
goto drop_and_free;
|
||||
|
||||
if (ipv6_opt_accepted(sk, skb, IP6CB(skb)) ||
|
||||
np->rxopt.bits.rxinfo || np->rxopt.bits.rxoinfo ||
|
||||
np->rxopt.bits.rxhlim || np->rxopt.bits.rxohlim) {
|
||||
|
||||
@@ -467,11 +467,15 @@ void tcp_init_metrics(struct sock *sk)
|
||||
u32 val, crtt = 0; /* cached RTT scaled by 8 */
|
||||
|
||||
sk_dst_confirm(sk);
|
||||
/* ssthresh may have been reduced unnecessarily during.
|
||||
* 3WHS. Restore it back to its initial default.
|
||||
*/
|
||||
tp->snd_ssthresh = TCP_INFINITE_SSTHRESH;
|
||||
if (!dst)
|
||||
goto reset;
|
||||
|
||||
rcu_read_lock();
|
||||
tm = tcp_get_metrics(sk, dst, true);
|
||||
tm = tcp_get_metrics(sk, dst, false);
|
||||
if (!tm) {
|
||||
rcu_read_unlock();
|
||||
goto reset;
|
||||
@@ -485,11 +489,6 @@ void tcp_init_metrics(struct sock *sk)
|
||||
tp->snd_ssthresh = val;
|
||||
if (tp->snd_ssthresh > tp->snd_cwnd_clamp)
|
||||
tp->snd_ssthresh = tp->snd_cwnd_clamp;
|
||||
} else {
|
||||
/* ssthresh may have been reduced unnecessarily during.
|
||||
* 3WHS. Restore it back to its initial default.
|
||||
*/
|
||||
tp->snd_ssthresh = TCP_INFINITE_SSTHRESH;
|
||||
}
|
||||
val = tcp_metric_get(tm, TCP_METRIC_REORDERING);
|
||||
if (val && tp->reordering != val) {
|
||||
|
||||
@@ -153,7 +153,13 @@ ip6_finish_output_gso_slowpath_drop(struct net *net, struct sock *sk,
|
||||
int err;
|
||||
|
||||
skb_mark_not_on_list(segs);
|
||||
err = ip6_fragment(net, sk, segs, ip6_finish_output2);
|
||||
/* Last GSO segment can be smaller than gso_size (and MTU).
|
||||
* Adding a fragment header would produce an "atomic fragment",
|
||||
* which is considered harmful (RFC-8021). Avoid that.
|
||||
*/
|
||||
err = segs->len > mtu ?
|
||||
ip6_fragment(net, sk, segs, ip6_finish_output2) :
|
||||
ip6_finish_output2(net, sk, segs);
|
||||
if (err && ret == 0)
|
||||
ret = err;
|
||||
}
|
||||
|
||||
@@ -183,14 +183,15 @@ struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb)
|
||||
treq = tcp_rsk(req);
|
||||
treq->tfo_listener = false;
|
||||
|
||||
if (security_inet_conn_request(sk, skb, req))
|
||||
goto out_free;
|
||||
|
||||
req->mss = mss;
|
||||
ireq->ir_rmt_port = th->source;
|
||||
ireq->ir_num = ntohs(th->dest);
|
||||
ireq->ir_v6_rmt_addr = ipv6_hdr(skb)->saddr;
|
||||
ireq->ir_v6_loc_addr = ipv6_hdr(skb)->daddr;
|
||||
|
||||
if (security_inet_conn_request(sk, skb, req))
|
||||
goto out_free;
|
||||
|
||||
if (ipv6_opt_accepted(sk, skb, &TCP_SKB_CB(skb)->header.h6) ||
|
||||
np->rxopt.bits.rxinfo || np->rxopt.bits.rxoinfo ||
|
||||
np->rxopt.bits.rxhlim || np->rxopt.bits.rxohlim) {
|
||||
|
||||
@@ -127,8 +127,14 @@ static inline int llc_fixup_skb(struct sk_buff *skb)
|
||||
skb->transport_header += llc_len;
|
||||
skb_pull(skb, llc_len);
|
||||
if (skb->protocol == htons(ETH_P_802_2)) {
|
||||
__be16 pdulen = eth_hdr(skb)->h_proto;
|
||||
s32 data_size = ntohs(pdulen) - llc_len;
|
||||
__be16 pdulen;
|
||||
s32 data_size;
|
||||
|
||||
if (skb->mac_len < ETH_HLEN)
|
||||
return 0;
|
||||
|
||||
pdulen = eth_hdr(skb)->h_proto;
|
||||
data_size = ntohs(pdulen) - llc_len;
|
||||
|
||||
if (data_size < 0 ||
|
||||
!pskb_may_pull(skb, data_size))
|
||||
|
||||
@@ -153,6 +153,9 @@ int llc_sap_action_send_test_r(struct llc_sap *sap, struct sk_buff *skb)
|
||||
int rc = 1;
|
||||
u32 data_size;
|
||||
|
||||
if (skb->mac_len < ETH_HLEN)
|
||||
return 1;
|
||||
|
||||
llc_pdu_decode_sa(skb, mac_da);
|
||||
llc_pdu_decode_da(skb, mac_sa);
|
||||
llc_pdu_decode_ssap(skb, &dsap);
|
||||
|
||||
@@ -77,6 +77,9 @@ static int llc_station_ac_send_test_r(struct sk_buff *skb)
|
||||
u32 data_size;
|
||||
struct sk_buff *nskb;
|
||||
|
||||
if (skb->mac_len < ETH_HLEN)
|
||||
goto out;
|
||||
|
||||
/* The test request command is type U (llc_len = 3) */
|
||||
data_size = ntohs(eth_hdr(skb)->h_proto) - 3;
|
||||
nskb = llc_alloc_frame(NULL, skb->dev, LLC_PDU_TYPE_U, data_size);
|
||||
|
||||
@@ -566,7 +566,7 @@ recent_mt_proc_write(struct file *file, const char __user *input,
|
||||
{
|
||||
struct recent_table *t = PDE_DATA(file_inode(file));
|
||||
struct recent_entry *e;
|
||||
char buf[sizeof("+b335:1d35:1e55:dead:c0de:1715:5afe:c0de")];
|
||||
char buf[sizeof("+b335:1d35:1e55:dead:c0de:1715:255.255.255.255")];
|
||||
const char *c = buf;
|
||||
union nf_inet_addr addr = {};
|
||||
u_int16_t family;
|
||||
|
||||
@@ -85,7 +85,7 @@ const struct nla_policy tipc_nl_net_policy[TIPC_NLA_NET_MAX + 1] = {
|
||||
|
||||
const struct nla_policy tipc_nl_link_policy[TIPC_NLA_LINK_MAX + 1] = {
|
||||
[TIPC_NLA_LINK_UNSPEC] = { .type = NLA_UNSPEC },
|
||||
[TIPC_NLA_LINK_NAME] = { .type = NLA_STRING,
|
||||
[TIPC_NLA_LINK_NAME] = { .type = NLA_NUL_STRING,
|
||||
.len = TIPC_MAX_LINK_NAME },
|
||||
[TIPC_NLA_LINK_MTU] = { .type = NLA_U32 },
|
||||
[TIPC_NLA_LINK_BROADCAST] = { .type = NLA_FLAG },
|
||||
@@ -113,7 +113,7 @@ const struct nla_policy tipc_nl_prop_policy[TIPC_NLA_PROP_MAX + 1] = {
|
||||
|
||||
const struct nla_policy tipc_nl_bearer_policy[TIPC_NLA_BEARER_MAX + 1] = {
|
||||
[TIPC_NLA_BEARER_UNSPEC] = { .type = NLA_UNSPEC },
|
||||
[TIPC_NLA_BEARER_NAME] = { .type = NLA_STRING,
|
||||
[TIPC_NLA_BEARER_NAME] = { .type = NLA_NUL_STRING,
|
||||
.len = TIPC_MAX_BEARER_NAME },
|
||||
[TIPC_NLA_BEARER_PROP] = { .type = NLA_NESTED },
|
||||
[TIPC_NLA_BEARER_DOMAIN] = { .type = NLA_U32 }
|
||||
|
||||
@@ -315,6 +315,7 @@ int snd_skl_parse_uuids(struct sst_dsp *ctx, const struct firmware *fw,
|
||||
module->instance_id = devm_kzalloc(ctx->dev, size, GFP_KERNEL);
|
||||
if (!module->instance_id) {
|
||||
ret = -ENOMEM;
|
||||
kfree(module);
|
||||
goto free_uuid_list;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user