[PATCH v2] pata_ipx4xx_cf: Fix unsigned comparison with less than zero

2021-04-10 Thread angkery
From: Junlin Yang 

The return from the call to platform_get_irq() is int, it can be
a negative error code, however this is being assigned to an unsigned
int variable 'irq', so making 'irq' an int, and change the position to
keep the code format.

Fixes coccicheck warnings:
./drivers/ata/pata_ixp4xx_cf.c:168:5-8:
WARNING: Unsigned expression compared with zero: irq < 0

Signed-off-by: Junlin Yang 
---
changes in v1:
update the commit information.
changes in v2:
As Sergei said, it should read irq < 0, update commit information.

 drivers/ata/pata_ixp4xx_cf.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/ata/pata_ixp4xx_cf.c b/drivers/ata/pata_ixp4xx_cf.c
index abc0e87..43215a4 100644
--- a/drivers/ata/pata_ixp4xx_cf.c
+++ b/drivers/ata/pata_ixp4xx_cf.c
@@ -135,12 +135,12 @@ static void ixp4xx_setup_port(struct ata_port *ap,
 
 static int ixp4xx_pata_probe(struct platform_device *pdev)
 {
-   unsigned int irq;
struct resource *cs0, *cs1;
struct ata_host *host;
struct ata_port *ap;
struct ixp4xx_pata_data *data = dev_get_platdata(>dev);
int ret;
+   int irq;
 
cs0 = platform_get_resource(pdev, IORESOURCE_MEM, 0);
cs1 = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-- 
1.9.1




[PATCH v1] pata_ipx4xx_cf: Fix unsigned comparison with less than zero

2021-04-09 Thread angkery
From: Junlin Yang 

The return from the call to platform_get_irq() is int, it can be
a negative error code, however this is being assigned to an unsigned
int variable 'irq', so making 'irq' an int, and change the position to
keep the code format.

Fixes coccicheck warnings:
./drivers/ata/pata_ixp4xx_cf.c:168:5-8:
WARNING: Unsigned expression compared with zero: irq > 0

Signed-off-by: Junlin Yang 
---
changes in v1:
update the commit information.

 drivers/ata/pata_ixp4xx_cf.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/ata/pata_ixp4xx_cf.c b/drivers/ata/pata_ixp4xx_cf.c
index abc0e87..43215a4 100644
--- a/drivers/ata/pata_ixp4xx_cf.c
+++ b/drivers/ata/pata_ixp4xx_cf.c
@@ -135,12 +135,12 @@ static void ixp4xx_setup_port(struct ata_port *ap,
 
 static int ixp4xx_pata_probe(struct platform_device *pdev)
 {
-   unsigned int irq;
struct resource *cs0, *cs1;
struct ata_host *host;
struct ata_port *ap;
struct ixp4xx_pata_data *data = dev_get_platdata(>dev);
int ret;
+   int irq;
 
cs0 = platform_get_resource(pdev, IORESOURCE_MEM, 0);
cs1 = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-- 
1.9.1




Re: [PATCH] pata_ipx4xx_cf: Fix unsigned comparison with less than zero

2021-04-09 Thread angkery
On Fri, 9 Apr 2021 20:02:56 +0300
Sergei Shtylyov  wrote:

> On 4/9/21 7:49 PM, Sergei Shtylyov wrote:
> 
> >> From: Junlin Yang 
> >>
> >> The return from the call to platform_get_irq() is int, it can be
> >> a negative error code, however this is being assigned to an
> >> unsigned int variable 'irq', so making 'irq' an int, and change
> >> the position to keep the code format.
> >>
> >> ./drivers/ata/pata_ixp4xx_cf.c:168:5-8:
> >> WARNING: Unsigned expression compared with zero: irq > 0  
> > 
> >I'd understand < 0... but > 0? What tool warned about this issue?
> >   
> > > yes, by coccicheck, i will update commits information.
> >
> >> Signed-off-by: Junlin Yang 
> >> ---
> >>  drivers/ata/pata_ixp4xx_cf.c | 2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/ata/pata_ixp4xx_cf.c
> >> b/drivers/ata/pata_ixp4xx_cf.c index abc0e87..43215a4 100644
> >> --- a/drivers/ata/pata_ixp4xx_cf.c
> >> +++ b/drivers/ata/pata_ixp4xx_cf.c
> >> @@ -135,12 +135,12 @@ static void ixp4xx_setup_port(struct
> >> ata_port *ap, 
> >>  static int ixp4xx_pata_probe(struct platform_device *pdev)
> >>  {
> >> -  unsigned int irq;  
> > 
> >Oops, not sure how I missed that. :-/
> >Thanks for fixing my overlook. :-)  
> 
>Forgot to add my
> 
> Reviewed-by: Sergei Shtylyov 
> 
> > [...]  
> 
> MBR, Sergei




[PATCH] pata_ipx4xx_cf: Fix unsigned comparison with less than zero

2021-04-09 Thread angkery
From: Junlin Yang 

The return from the call to platform_get_irq() is int, it can be
a negative error code, however this is being assigned to an unsigned
int variable 'irq', so making 'irq' an int, and change the position to
keep the code format.

./drivers/ata/pata_ixp4xx_cf.c:168:5-8:
WARNING: Unsigned expression compared with zero: irq > 0

Signed-off-by: Junlin Yang 
---
 drivers/ata/pata_ixp4xx_cf.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/ata/pata_ixp4xx_cf.c b/drivers/ata/pata_ixp4xx_cf.c
index abc0e87..43215a4 100644
--- a/drivers/ata/pata_ixp4xx_cf.c
+++ b/drivers/ata/pata_ixp4xx_cf.c
@@ -135,12 +135,12 @@ static void ixp4xx_setup_port(struct ata_port *ap,
 
 static int ixp4xx_pata_probe(struct platform_device *pdev)
 {
-   unsigned int irq;
struct resource *cs0, *cs1;
struct ata_host *host;
struct ata_port *ap;
struct ixp4xx_pata_data *data = dev_get_platdata(>dev);
int ret;
+   int irq;
 
cs0 = platform_get_resource(pdev, IORESOURCE_MEM, 0);
cs1 = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-- 
1.9.1




[PATCH] remoteproc: qcom: wcss: Remove unnecessary PTR_ERR()

2021-04-08 Thread angkery
From: Junlin Yang 

Remove unnecessary PTR_ERR(), it has been assigned to ret before,
so return ret directly.

Signed-off-by: Junlin Yang 
---
 drivers/remoteproc/qcom_q6v5_wcss.c | 18 +-
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/remoteproc/qcom_q6v5_wcss.c 
b/drivers/remoteproc/qcom_q6v5_wcss.c
index 71ec1a4..7581983 100644
--- a/drivers/remoteproc/qcom_q6v5_wcss.c
+++ b/drivers/remoteproc/qcom_q6v5_wcss.c
@@ -913,7 +913,7 @@ static int q6v5_wcss_init_clock(struct q6v5_wcss *wcss)
ret = PTR_ERR(wcss->gcc_abhs_cbcr);
if (ret != -EPROBE_DEFER)
dev_err(wcss->dev, "failed to get gcc abhs clock");
-   return PTR_ERR(wcss->gcc_abhs_cbcr);
+   return ret;
}
 
wcss->gcc_axim_cbcr = devm_clk_get(wcss->dev, "gcc_axim_cbcr");
@@ -921,7 +921,7 @@ static int q6v5_wcss_init_clock(struct q6v5_wcss *wcss)
ret = PTR_ERR(wcss->gcc_axim_cbcr);
if (ret != -EPROBE_DEFER)
dev_err(wcss->dev, "failed to get gcc axim clock\n");
-   return PTR_ERR(wcss->gcc_axim_cbcr);
+   return ret;
}
 
wcss->ahbfabric_cbcr_clk = devm_clk_get(wcss->dev,
@@ -930,7 +930,7 @@ static int q6v5_wcss_init_clock(struct q6v5_wcss *wcss)
ret = PTR_ERR(wcss->ahbfabric_cbcr_clk);
if (ret != -EPROBE_DEFER)
dev_err(wcss->dev, "failed to get ahbfabric clock\n");
-   return PTR_ERR(wcss->ahbfabric_cbcr_clk);
+   return ret;
}
 
wcss->lcc_csr_cbcr = devm_clk_get(wcss->dev, "tcsr_lcc_cbc");
@@ -938,7 +938,7 @@ static int q6v5_wcss_init_clock(struct q6v5_wcss *wcss)
ret = PTR_ERR(wcss->lcc_csr_cbcr);
if (ret != -EPROBE_DEFER)
dev_err(wcss->dev, "failed to get csr cbcr clk\n");
-   return PTR_ERR(wcss->lcc_csr_cbcr);
+   return ret;
}
 
wcss->ahbs_cbcr = devm_clk_get(wcss->dev,
@@ -947,7 +947,7 @@ static int q6v5_wcss_init_clock(struct q6v5_wcss *wcss)
ret = PTR_ERR(wcss->ahbs_cbcr);
if (ret != -EPROBE_DEFER)
dev_err(wcss->dev, "failed to get ahbs_cbcr clk\n");
-   return PTR_ERR(wcss->ahbs_cbcr);
+   return ret;
}
 
wcss->tcm_slave_cbcr = devm_clk_get(wcss->dev,
@@ -956,7 +956,7 @@ static int q6v5_wcss_init_clock(struct q6v5_wcss *wcss)
ret = PTR_ERR(wcss->tcm_slave_cbcr);
if (ret != -EPROBE_DEFER)
dev_err(wcss->dev, "failed to get tcm cbcr clk\n");
-   return PTR_ERR(wcss->tcm_slave_cbcr);
+   return ret;
}
 
wcss->qdsp6ss_abhm_cbcr = devm_clk_get(wcss->dev, "lcc_abhm_cbc");
@@ -964,7 +964,7 @@ static int q6v5_wcss_init_clock(struct q6v5_wcss *wcss)
ret = PTR_ERR(wcss->qdsp6ss_abhm_cbcr);
if (ret != -EPROBE_DEFER)
dev_err(wcss->dev, "failed to get abhm cbcr clk\n");
-   return PTR_ERR(wcss->qdsp6ss_abhm_cbcr);
+   return ret;
}
 
wcss->qdsp6ss_axim_cbcr = devm_clk_get(wcss->dev, "lcc_axim_cbc");
@@ -972,7 +972,7 @@ static int q6v5_wcss_init_clock(struct q6v5_wcss *wcss)
ret = PTR_ERR(wcss->qdsp6ss_axim_cbcr);
if (ret != -EPROBE_DEFER)
dev_err(wcss->dev, "failed to get axim cbcr clk\n");
-   return PTR_ERR(wcss->qdsp6ss_abhm_cbcr);
+   return ret;
}
 
wcss->lcc_bcr_sleep = devm_clk_get(wcss->dev, "lcc_bcr_sleep");
@@ -980,7 +980,7 @@ static int q6v5_wcss_init_clock(struct q6v5_wcss *wcss)
ret = PTR_ERR(wcss->lcc_bcr_sleep);
if (ret != -EPROBE_DEFER)
dev_err(wcss->dev, "failed to get bcr cbcr clk\n");
-   return PTR_ERR(wcss->lcc_bcr_sleep);
+   return ret;
}
 
return 0;
-- 
1.9.1



[PATCH] pinctrl: ti: fix error return code of ti_iodelay_dt_node_to_map()

2021-03-30 Thread angkery
From: Junlin Yang 

when devm_kcalloc fails, use -ENOMEM instead of -EINVAL,
and consistent with other devm_kcalloc return values.

Signed-off-by: Junlin Yang 
---
 drivers/pinctrl/ti/pinctrl-ti-iodelay.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/pinctrl/ti/pinctrl-ti-iodelay.c 
b/drivers/pinctrl/ti/pinctrl-ti-iodelay.c
index e584826..4e23827 100644
--- a/drivers/pinctrl/ti/pinctrl-ti-iodelay.c
+++ b/drivers/pinctrl/ti/pinctrl-ti-iodelay.c
@@ -511,8 +511,10 @@ static int ti_iodelay_dt_node_to_map(struct pinctrl_dev 
*pctldev,
}
 
pins = devm_kcalloc(iod->dev, rows, sizeof(*pins), GFP_KERNEL);
-   if (!pins)
+   if (!pins) {
+   error = -ENOMEM;
goto free_group;
+   }
 
cfg = devm_kcalloc(iod->dev, rows, sizeof(*cfg), GFP_KERNEL);
if (!cfg) {
-- 
1.9.1




[PATCH] mt76: Convert to DEFINE_SHOW_ATTRIBUTE

2021-03-27 Thread angkery
From: Junlin Yang 

Use DEFINE_SHOW_ATTRIBUTE macro to simplify the code.

Signed-off-by: Junlin Yang 
---
 .../net/wireless/mediatek/mt76/mt7915/debugfs.c| 36 --
 .../net/wireless/mediatek/mt76/mt7921/debugfs.c| 18 ++-
 2 files changed, 9 insertions(+), 45 deletions(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/debugfs.c 
b/drivers/net/wireless/mediatek/mt76/mt7915/debugfs.c
index 77dcd71..7bef36f 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7915/debugfs.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7915/debugfs.c
@@ -192,7 +192,7 @@ static int mt7915_ser_trigger_set(void *data, u64 val)
 }
 
 static int
-mt7915_tx_stats_read(struct seq_file *file, void *data)
+mt7915_tx_stats_show(struct seq_file *file, void *data)
 {
struct mt7915_dev *dev = file->private;
int stat[8], i, n;
@@ -222,19 +222,7 @@ static int mt7915_ser_trigger_set(void *data, u64 val)
return 0;
 }
 
-static int
-mt7915_tx_stats_open(struct inode *inode, struct file *f)
-{
-   return single_open(f, mt7915_tx_stats_read, inode->i_private);
-}
-
-static const struct file_operations fops_tx_stats = {
-   .open = mt7915_tx_stats_open,
-   .read = seq_read,
-   .llseek = seq_lseek,
-   .release = single_release,
-   .owner = THIS_MODULE,
-};
+DEFINE_SHOW_ATTRIBUTE(mt7915_tx_stats);
 
 static int mt7915_read_temperature(struct seq_file *s, void *data)
 {
@@ -379,7 +367,7 @@ int mt7915_init_debugfs(struct mt7915_dev *dev)
mt7915_queues_read);
debugfs_create_devm_seqfile(dev->mt76.dev, "acq", dir,
mt7915_queues_acq);
-   debugfs_create_file("tx_stats", 0400, dir, dev, _tx_stats);
+   debugfs_create_file("tx_stats", 0400, dir, dev, _tx_stats_fops);
debugfs_create_file("fw_debug", 0600, dir, dev, _fw_debug);
debugfs_create_file("implicit_txbf", 0600, dir, dev,
_implicit_txbf);
@@ -412,7 +400,7 @@ static int mt7915_sta_fixed_rate_set(void *data, u64 rate)
 mt7915_sta_fixed_rate_set, "%llx\n");
 
 static int
-mt7915_sta_stats_read(struct seq_file *s, void *data)
+mt7915_sta_stats_show(struct seq_file *s, void *data)
 {
struct ieee80211_sta *sta = s->private;
struct mt7915_sta *msta = (struct mt7915_sta *)sta->drv_priv;
@@ -455,24 +443,12 @@ static int mt7915_sta_fixed_rate_set(void *data, u64 rate)
return 0;
 }
 
-static int
-mt7915_sta_stats_open(struct inode *inode, struct file *f)
-{
-   return single_open(f, mt7915_sta_stats_read, inode->i_private);
-}
-
-static const struct file_operations fops_sta_stats = {
-   .open = mt7915_sta_stats_open,
-   .read = seq_read,
-   .llseek = seq_lseek,
-   .release = single_release,
-   .owner = THIS_MODULE,
-};
+DEFINE_SHOW_ATTRIBUTE(mt7915_sta_stats);
 
 void mt7915_sta_add_debugfs(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
struct ieee80211_sta *sta, struct dentry *dir)
 {
debugfs_create_file("fixed_rate", 0600, dir, sta, _fixed_rate);
-   debugfs_create_file("stats", 0400, dir, sta, _sta_stats);
+   debugfs_create_file("stats", 0400, dir, sta, _sta_stats_fops);
 }
 #endif
diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c 
b/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c
index 0dc8e25..c1a64ff 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c
@@ -62,7 +62,7 @@
 }
 
 static int
-mt7921_tx_stats_read(struct seq_file *file, void *data)
+mt7921_tx_stats_show(struct seq_file *file, void *data)
 {
struct mt7921_dev *dev = file->private;
int stat[8], i, n;
@@ -88,19 +88,7 @@
return 0;
 }
 
-static int
-mt7921_tx_stats_open(struct inode *inode, struct file *f)
-{
-   return single_open(f, mt7921_tx_stats_read, inode->i_private);
-}
-
-static const struct file_operations fops_tx_stats = {
-   .open = mt7921_tx_stats_open,
-   .read = seq_read,
-   .llseek = seq_lseek,
-   .release = single_release,
-   .owner = THIS_MODULE,
-};
+DEFINE_SHOW_ATTRIBUTE(mt7921_tx_stats);
 
 static int
 mt7921_queues_acq(struct seq_file *s, void *data)
@@ -239,7 +227,7 @@ int mt7921_init_debugfs(struct mt7921_dev *dev)
mt7921_queues_read);
debugfs_create_devm_seqfile(dev->mt76.dev, "acq", dir,
mt7921_queues_acq);
-   debugfs_create_file("tx_stats", 0400, dir, dev, _tx_stats);
+   debugfs_create_file("tx_stats", 0400, dir, dev, _tx_stats_fops);
debugfs_create_file("fw_debug", 0600, dir, dev, _fw_debug);
debugfs_create_file("runtime-pm", 0600, dir, dev, _pm);
debugfs_create_file("idle-timeout", 0600, dir, dev,
-- 
1.9.1




[PATCH] Revert "phy: ti: j721e-wiz: add missing of_node_put"

2021-03-16 Thread angkery
From: Junlin Yang 

This reverts commit 00f2e6f668b05c259f3f8d1e943318bcad8486e7.

The duplicate from #796 should be removed.

Signed-off-by: Junlin Yang 
---
 drivers/phy/ti/phy-j721e-wiz.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/phy/ti/phy-j721e-wiz.c b/drivers/phy/ti/phy-j721e-wiz.c
index 59439a9..448d8d1 100644
--- a/drivers/phy/ti/phy-j721e-wiz.c
+++ b/drivers/phy/ti/phy-j721e-wiz.c
@@ -793,7 +793,6 @@ static int wiz_get_lane_phy_types(struct device *dev, 
struct wiz *wiz)
dev_err(dev,
"%s: Reading \"reg\" from \"%s\" failed: %d\n",
__func__, subnode->name, ret);
-   of_node_put(subnode);
return ret;
}
of_property_read_u32(subnode, "cdns,num-lanes", _lanes);
-- 
1.9.1




[PATCH] drm/kmb: remove unneeded semicolon

2021-03-12 Thread angkery
From: Junlin Yang 

Fixes coccicheck warnings:
./drivers/gpu/drm/kmb/kmb_dsi.c:284:3-4: Unneeded semicolon
./drivers/gpu/drm/kmb/kmb_dsi.c:304:3-4: Unneeded semicolon
./drivers/gpu/drm/kmb/kmb_dsi.c:321:3-4: Unneeded semicolon
./drivers/gpu/drm/kmb/kmb_dsi.c:340:3-4: Unneeded semicolon
./drivers/gpu/drm/kmb/kmb_dsi.c:364:2-3: Unneeded semicolon

Signed-off-by: Junlin Yang 
---
 drivers/gpu/drm/kmb/kmb_dsi.c | 10 +-
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/kmb/kmb_dsi.c b/drivers/gpu/drm/kmb/kmb_dsi.c
index 4b5d82a..231041b 100644
--- a/drivers/gpu/drm/kmb/kmb_dsi.c
+++ b/drivers/gpu/drm/kmb/kmb_dsi.c
@@ -281,7 +281,7 @@ static u32 mipi_get_datatype_params(u32 data_type, u32 
data_mode,
default:
DRM_ERROR("DSI: Invalid data_mode %d\n", data_mode);
return -EINVAL;
-   };
+   }
break;
case DSI_LP_DT_PPS_YCBCR422_16B:
data_type_param.size_constraint_pixels = 2;
@@ -301,7 +301,7 @@ static u32 mipi_get_datatype_params(u32 data_type, u32 
data_mode,
default:
DRM_ERROR("DSI: Invalid data_mode %d\n", data_mode);
return -EINVAL;
-   };
+   }
break;
case DSI_LP_DT_LPPS_YCBCR422_20B:
case DSI_LP_DT_PPS_YCBCR422_24B:
@@ -318,7 +318,7 @@ static u32 mipi_get_datatype_params(u32 data_type, u32 
data_mode,
default:
DRM_ERROR("DSI: Invalid data_mode %d\n", data_mode);
return -EINVAL;
-   };
+   }
break;
case DSI_LP_DT_PPS_RGB565_16B:
data_type_param.size_constraint_pixels = 1;
@@ -337,7 +337,7 @@ static u32 mipi_get_datatype_params(u32 data_type, u32 
data_mode,
default:
DRM_ERROR("DSI: Invalid data_mode %d\n", data_mode);
return -EINVAL;
-   };
+   }
break;
case DSI_LP_DT_PPS_RGB666_18B:
data_type_param.size_constraint_pixels = 4;
@@ -361,7 +361,7 @@ static u32 mipi_get_datatype_params(u32 data_type, u32 
data_mode,
default:
DRM_ERROR("DSI: Invalid data_type %d\n", data_type);
return -EINVAL;
-   };
+   }
 
*params = data_type_param;
return 0;
-- 
1.9.1




[PATCH] drm/omap: dsi: fix unsigned expression compared with zero

2021-03-11 Thread angkery
From: Junlin Yang 

r is "u32" always >= 0,mipi_dsi_create_packet may return little than zero.
so r < 0 condition is never accessible.

Fixes coccicheck warnings:
./drivers/gpu/drm/omapdrm/dss/dsi.c:2155:5-6:
WARNING: Unsigned expression compared with zero: r < 0

Signed-off-by: Junlin Yang 
---
 drivers/gpu/drm/omapdrm/dss/dsi.c | 7 ---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/omapdrm/dss/dsi.c 
b/drivers/gpu/drm/omapdrm/dss/dsi.c
index 8e11612..b31d750 100644
--- a/drivers/gpu/drm/omapdrm/dss/dsi.c
+++ b/drivers/gpu/drm/omapdrm/dss/dsi.c
@@ -2149,11 +2149,12 @@ static int dsi_vc_send_short(struct dsi_data *dsi, int 
vc,
 const struct mipi_dsi_msg *msg)
 {
struct mipi_dsi_packet pkt;
+   int ret;
u32 r;
 
-   r = mipi_dsi_create_packet(, msg);
-   if (r < 0)
-   return r;
+   ret = mipi_dsi_create_packet(, msg);
+   if (ret < 0)
+   return ret;
 
WARN_ON(!dsi_bus_is_locked(dsi));
 
-- 
1.9.1




[PATCH] esp6: remove a duplicative condition

2021-03-10 Thread angkery
From: Junlin Yang 

Fixes coccicheck warnings:
./net/ipv6/esp6_offload.c:319:32-34:
WARNING !A || A && B is equivalent to !A || B

Signed-off-by: Junlin Yang 
---
 net/ipv6/esp6_offload.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/ipv6/esp6_offload.c b/net/ipv6/esp6_offload.c
index 1ca516f..631c168 100644
--- a/net/ipv6/esp6_offload.c
+++ b/net/ipv6/esp6_offload.c
@@ -316,7 +316,7 @@ static int esp6_xmit(struct xfrm_state *x, struct sk_buff 
*skb,  netdev_features
esp.plen = esp.clen - skb->len - esp.tfclen;
esp.tailen = esp.tfclen + esp.plen + alen;
 
-   if (!hw_offload || (hw_offload && !skb_is_gso(skb))) {
+   if (!hw_offload || !skb_is_gso(skb)) {
esp.nfrags = esp6_output_head(x, skb, );
if (esp.nfrags < 0)
return esp.nfrags;
-- 
1.9.1




[PATCH] firmware: qcom_scm: remove a duplicative condition

2021-03-10 Thread angkery
From: Junlin Yang 

Fixes coccicheck warnings:
./drivers/firmware/qcom_scm.c:324:20-22:
WARNING !A || A && B is equivalent to !A || B

Signed-off-by: Junlin Yang 
---
 drivers/firmware/qcom_scm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/firmware/qcom_scm.c b/drivers/firmware/qcom_scm.c
index f57779f..5483416 100644
--- a/drivers/firmware/qcom_scm.c
+++ b/drivers/firmware/qcom_scm.c
@@ -321,7 +321,7 @@ int qcom_scm_set_cold_boot_addr(void *entry, const 
cpumask_t *cpus)
.owner = ARM_SMCCC_OWNER_SIP,
};
 
-   if (!cpus || (cpus && cpumask_empty(cpus)))
+   if (!cpus || cpumask_empty(cpus))
return -EINVAL;
 
for_each_cpu(cpu, cpus) {
-- 
1.9.1




[PATCH] csky: fix typos

2021-03-05 Thread angkery
From: Junlin Yang 

fixes three typos found by codespell.

Signed-off-by: Junlin Yang 
---
 arch/csky/include/asm/asid.h| 2 +-
 arch/csky/include/asm/barrier.h | 2 +-
 arch/csky/include/asm/vdso.h| 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/csky/include/asm/asid.h b/arch/csky/include/asm/asid.h
index ac08b0f..6ff205a 100644
--- a/arch/csky/include/asm/asid.h
+++ b/arch/csky/include/asm/asid.h
@@ -37,7 +37,7 @@ void asid_new_context(struct asid_info *info, atomic64_t 
*pasid,
  * Check the ASID is still valid for the context. If not generate a new ASID.
  *
  * @pasid: Pointer to the current ASID batch
- * @cpu: current CPU ID. Must have been acquired throught get_cpu()
+ * @cpu: current CPU ID. Must have been acquired through get_cpu()
  */
 static inline void asid_check_context(struct asid_info *info,
  atomic64_t *pasid, unsigned int cpu,
diff --git a/arch/csky/include/asm/barrier.h b/arch/csky/include/asm/barrier.h
index 84fc600c..f4045dd 100644
--- a/arch/csky/include/asm/barrier.h
+++ b/arch/csky/include/asm/barrier.h
@@ -64,7 +64,7 @@
 
 /*
  * sync:completion barrier, all sync.xx instructions
- *  guarantee the last response recieved by bus transaction
+ *  guarantee the last response received by bus transaction
  *  made by ld/st instructions before sync.s
  * sync.s:  inherit from sync, but also shareable to other cores
  * sync.i:  inherit from sync, but also flush cpu pipeline
diff --git a/arch/csky/include/asm/vdso.h b/arch/csky/include/asm/vdso.h
index eb5142f..bdce581 100644
--- a/arch/csky/include/asm/vdso.h
+++ b/arch/csky/include/asm/vdso.h
@@ -16,7 +16,7 @@ struct vdso_data {
  * offset of 0, but since the linker must support setting weak undefined
  * symbols to the absolute address 0 it also happens to support other low
  * addresses even when the code model suggests those low addresses would not
- * otherwise be availiable.
+ * otherwise be available.
  */
 #define VDSO_SYMBOL(base, name)
\
 ({ 
\
-- 
1.9.1




[PATCH v1] ibmvnic: remove excessive irqsave

2021-03-05 Thread angkery
From: Junlin Yang 

ibmvnic_remove locks multiple spinlocks while disabling interrupts:
spin_lock_irqsave(>state_lock, flags);
spin_lock_irqsave(>rwi_lock, flags);

As reported by coccinelle, the second _irqsave() overwrites the value
saved in 'flags' by the first _irqsave(),   therefore when the second
_irqrestore() comes,the value in 'flags' is not valid,the value saved
by the first _irqsave() has been lost.
This likely leads to IRQs remaining disabled. So remove the second
_irqsave():
spin_lock_irqsave(>state_lock, flags);
spin_lock(>rwi_lock);

Generated by: ./scripts/coccinelle/locks/flags.cocci
./drivers/net/ethernet/ibm/ibmvnic.c:5413:1-18:
ERROR: nested lock+irqsave that reuses flags from line 5404.

Fixes: 4a41c421f367 ("ibmvnic: serialize access to work queue on remove")
Signed-off-by: Junlin Yang 
---
Changes in v1:
a.According to Christophe Leroy's explanation, update the commit 
information.
b.Add fixes tags.

 drivers/net/ethernet/ibm/ibmvnic.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/ibm/ibmvnic.c 
b/drivers/net/ethernet/ibm/ibmvnic.c
index 2464c8a..a52668d 100644
--- a/drivers/net/ethernet/ibm/ibmvnic.c
+++ b/drivers/net/ethernet/ibm/ibmvnic.c
@@ -5408,9 +5408,9 @@ static void ibmvnic_remove(struct vio_dev *dev)
 * after setting state, so __ibmvnic_reset() which is called
 * from the flush_work() below, can make progress.
 */
-   spin_lock_irqsave(>rwi_lock, flags);
+   spin_lock(>rwi_lock);
adapter->state = VNIC_REMOVING;
-   spin_unlock_irqrestore(>rwi_lock, flags);
+   spin_unlock(>rwi_lock);
 
spin_unlock_irqrestore(>state_lock, flags);
 
-- 
1.9.1




[PATCH] iwlwifi: mvm: Use kmemdup instead of kzalloc and memcpy

2021-03-05 Thread angkery
From: Junlin Yang 

Fixes coccicheck warnings:
./drivers/net/wireless/intel/iwlwifi/mvm/rfi.c:110:8-15:
WARNING opportunity for kmemdup

Signed-off-by: Junlin Yang 
---
 drivers/net/wireless/intel/iwlwifi/mvm/rfi.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rfi.c 
b/drivers/net/wireless/intel/iwlwifi/mvm/rfi.c
index 8739190..f665045 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/rfi.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/rfi.c
@@ -107,12 +107,10 @@ struct iwl_rfi_freq_table_resp_cmd 
*iwl_rfi_get_freq_table(struct iwl_mvm *mvm)
if (WARN_ON_ONCE(iwl_rx_packet_payload_len(cmd.resp_pkt) != resp_size))
return ERR_PTR(-EIO);
 
-   resp = kzalloc(resp_size, GFP_KERNEL);
+   resp = kmemdup(cmd.resp_pkt->data, resp_size, GFP_KERNEL);
if (!resp)
return ERR_PTR(-ENOMEM);
 
-   memcpy(resp, cmd.resp_pkt->data, resp_size);
-
iwl_free_resp();
return resp;
 }
-- 
1.9.1




[PATCH] ethernet: ucc_geth: Use kmemdup instead of kmalloc and memcpy

2021-03-05 Thread angkery
From: Junlin Yang 

Fixes coccicheck warnings:
./drivers/net/ethernet/freescale/ucc_geth.c:3594:11-18:
WARNING opportunity for kmemdup

Signed-off-by: Junlin Yang 
---
 drivers/net/ethernet/freescale/ucc_geth.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/freescale/ucc_geth.c 
b/drivers/net/ethernet/freescale/ucc_geth.c
index ef4e2fe..2c079ad 100644
--- a/drivers/net/ethernet/freescale/ucc_geth.c
+++ b/drivers/net/ethernet/freescale/ucc_geth.c
@@ -3591,10 +3591,9 @@ static int ucc_geth_probe(struct platform_device* ofdev)
if ((ucc_num < 0) || (ucc_num > 7))
return -ENODEV;
 
-   ug_info = kmalloc(sizeof(*ug_info), GFP_KERNEL);
+   ug_info = kmemdup(_primary_info, sizeof(*ug_info), GFP_KERNEL);
if (ug_info == NULL)
return -ENOMEM;
-   memcpy(ug_info, _primary_info, sizeof(*ug_info));
 
ug_info->uf_info.ucc_num = ucc_num;
 
-- 
1.9.1




Re: [PATCH] ibmvnic: remove excessive irqsave

2021-03-04 Thread angkery
On Fri, 5 Mar 2021 06:49:14 +0100
Christophe Leroy  wrote:

> Le 05/03/2021 ?? 02:43, angkery a ??crit?0?2:
> > From: Junlin Yang 
> > 
> > ibmvnic_remove locks multiple spinlocks while disabling interrupts:
> > spin_lock_irqsave(>state_lock, flags);
> > spin_lock_irqsave(>rwi_lock, flags);
> > 
> > there is no need for the second irqsave,since interrupts are
> > disabled at that point, so remove the second irqsave:  
> 
> The probl??me is not that there is no need. The problem is a lot more
> serious: As reported by coccinella, the second _irqsave() overwrites
> the value saved in 'flags' by the first _irqsave, therefore when the
> second _irqrestore comes, the value in 'flags' is not valid, the
> value saved by the first _irqsave has been lost. This likely leads to
> IRQs remaining disabled, which is _THE_ problem really.
> 

Thank you for explaining the real problem.
I will update the commit information with your description.


> > spin_lock_irqsave(>state_lock, flags);
> > spin_lock(>rwi_lock);
> > 
> > Generated by: ./scripts/coccinelle/locks/flags.cocci
> > ./drivers/net/ethernet/ibm/ibmvnic.c:5413:1-18:
> > ERROR: nested lock+irqsave that reuses flags from line 5404.
> > 
> > Signed-off-by: Junlin Yang 
> > ---
> >   drivers/net/ethernet/ibm/ibmvnic.c | 4 ++--
> >   1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/net/ethernet/ibm/ibmvnic.c
> > b/drivers/net/ethernet/ibm/ibmvnic.c index 2464c8a..a52668d 100644
> > --- a/drivers/net/ethernet/ibm/ibmvnic.c
> > +++ b/drivers/net/ethernet/ibm/ibmvnic.c
> > @@ -5408,9 +5408,9 @@ static void ibmvnic_remove(struct vio_dev
> > *dev)
> >  * after setting state, so __ibmvnic_reset() which is
> > called
> >  * from the flush_work() below, can make progress.
> >  */
> > -   spin_lock_irqsave(>rwi_lock, flags);
> > +   spin_lock(>rwi_lock);
> > adapter->state = VNIC_REMOVING;
> > -   spin_unlock_irqrestore(>rwi_lock, flags);
> > +   spin_unlock(>rwi_lock);
> >   
> > spin_unlock_irqrestore(>state_lock, flags);
> >   
> >   




[PATCH] ibmvnic: remove excessive irqsave

2021-03-04 Thread angkery
From: Junlin Yang 

ibmvnic_remove locks multiple spinlocks while disabling interrupts:
spin_lock_irqsave(>state_lock, flags);
spin_lock_irqsave(>rwi_lock, flags);

there is no need for the second irqsave,since interrupts are disabled
at that point, so remove the second irqsave:
spin_lock_irqsave(>state_lock, flags);
spin_lock(>rwi_lock);

Generated by: ./scripts/coccinelle/locks/flags.cocci
./drivers/net/ethernet/ibm/ibmvnic.c:5413:1-18:
ERROR: nested lock+irqsave that reuses flags from line 5404.

Signed-off-by: Junlin Yang 
---
 drivers/net/ethernet/ibm/ibmvnic.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/ibm/ibmvnic.c 
b/drivers/net/ethernet/ibm/ibmvnic.c
index 2464c8a..a52668d 100644
--- a/drivers/net/ethernet/ibm/ibmvnic.c
+++ b/drivers/net/ethernet/ibm/ibmvnic.c
@@ -5408,9 +5408,9 @@ static void ibmvnic_remove(struct vio_dev *dev)
 * after setting state, so __ibmvnic_reset() which is called
 * from the flush_work() below, can make progress.
 */
-   spin_lock_irqsave(>rwi_lock, flags);
+   spin_lock(>rwi_lock);
adapter->state = VNIC_REMOVING;
-   spin_unlock_irqrestore(>rwi_lock, flags);
+   spin_unlock(>rwi_lock);
 
spin_unlock_irqrestore(>state_lock, flags);
 
-- 
1.9.1




[PATCH] net/mlx5: use kvfree() for memory allocated with kvzalloc()

2021-03-03 Thread angkery
From: Junlin Yang 

It is allocated with kvzalloc(), the corresponding release function
should not be kfree(), use kvfree() instead.

Generated by: scripts/coccinelle/api/kfree_mismatch.cocci

Signed-off-by: Junlin Yang 
---
 drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c | 10 +-
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c 
b/drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c
index 6f6772b..3da7bec 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c
@@ -248,7 +248,7 @@ static int mlx5_esw_indir_table_rule_get(struct 
mlx5_eswitch *esw,
 err_ethertype:
kfree(rule);
 out:
-   kfree(rule_spec);
+   kvfree(rule_spec);
return err;
 }
 
@@ -328,7 +328,7 @@ static int mlx5_create_indir_recirc_group(struct 
mlx5_eswitch *esw,
e->recirc_cnt = 0;
 
 out:
-   kfree(in);
+   kvfree(in);
return err;
 }
 
@@ -347,7 +347,7 @@ static int mlx5_create_indir_fwd_group(struct mlx5_eswitch 
*esw,
 
spec = kvzalloc(sizeof(*spec), GFP_KERNEL);
if (!spec) {
-   kfree(in);
+   kvfree(in);
return -ENOMEM;
}
 
@@ -371,8 +371,8 @@ static int mlx5_create_indir_fwd_group(struct mlx5_eswitch 
*esw,
}
 
 err_out:
-   kfree(spec);
-   kfree(in);
+   kvfree(spec);
+   kvfree(in);
return err;
 }
 
-- 
1.9.1




[PATCH] Input: i8042: Remove unneeded variable

2021-02-25 Thread angkery
From: Junlin Yang 

The variable "delay" is initialized to zero and then returned.
So remove the delay variable and return zero.

Generated by:scripts/coccinelle/misc/returnvar.cocci

Signed-off-by: Junlin Yang 
---
 drivers/input/serio/i8042.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
index abae23a..145bda1 100644
--- a/drivers/input/serio/i8042.c
+++ b/drivers/input/serio/i8042.c
@@ -1126,7 +1126,6 @@ static void i8042_controller_reset(bool s2r_wants_reset)
 
 static long i8042_panic_blink(int state)
 {
-   long delay = 0;
char led;
 
led = (state) ? 0x01 | 0x04 : 0;
@@ -1142,7 +1141,7 @@ static long i8042_panic_blink(int state)
dbg("%02x -> i8042 (panic blink)\n", led);
i8042_write_data(led);
DELAY;
-   return delay;
+   return 0;
 }
 
 #undef DELAY
-- 
1.9.1




[PATCH] Input: Remove unneeded variable

2021-02-25 Thread angkery
From: Junlin Yang 

The variable "ret" is initialized to zero and then returned.
So remove the ret variable and return zero.

Generated by:scripts/coccinelle/misc/returnvar.cocci

Signed-off-by: Junlin Yang 
---
 drivers/input/input.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/input/input.c b/drivers/input/input.c
index ccaeb24..8cdc3fe 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -1746,8 +1746,6 @@ void input_reset_device(struct input_dev *dev)
 
 static int input_inhibit_device(struct input_dev *dev)
 {
-   int ret = 0;
-
mutex_lock(>mutex);
 
if (dev->inhibited)
@@ -1769,7 +1767,7 @@ static int input_inhibit_device(struct input_dev *dev)
 
 out:
mutex_unlock(>mutex);
-   return ret;
+   return 0;
 }
 
 static int input_uninhibit_device(struct input_dev *dev)
-- 
1.9.1



[PATCH] phy: rockchip-typec: add missing of_node_put

2021-02-16 Thread angkery
From: Junlin Yang 

Fix OF node leaks by calling of_node_put in
for_each_available_child_of_node when the cycle returns.

Generated by: scripts/coccinelle/iterators/for_each_child.cocci

Signed-off-by: Junlin Yang 
---
 drivers/phy/rockchip/phy-rockchip-typec.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/phy/rockchip/phy-rockchip-typec.c 
b/drivers/phy/rockchip/phy-rockchip-typec.c
index 70a3125..d2bbdc9 100644
--- a/drivers/phy/rockchip/phy-rockchip-typec.c
+++ b/drivers/phy/rockchip/phy-rockchip-typec.c
@@ -1180,6 +1180,7 @@ static int rockchip_typec_phy_probe(struct 
platform_device *pdev)
dev_err(dev, "failed to create phy: %pOFn\n",
child_np);
pm_runtime_disable(dev);
+   of_node_put(child_np);
return PTR_ERR(phy);
}
 
-- 
1.9.1




[PATCH] phy: ti: j721e-wiz: add missing of_node_put

2021-02-16 Thread angkery
From: Junlin Yang 

Fix OF node leaks by calling of_node_put in
for_each_child_of_node when the cycle returns.

Generated by: scripts/coccinelle/iterators/for_each_child.cocci

Signed-off-by: Junlin Yang 
---
 drivers/phy/ti/phy-j721e-wiz.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/phy/ti/phy-j721e-wiz.c b/drivers/phy/ti/phy-j721e-wiz.c
index c9cfafe..8a4be1e 100644
--- a/drivers/phy/ti/phy-j721e-wiz.c
+++ b/drivers/phy/ti/phy-j721e-wiz.c
@@ -792,6 +792,7 @@ static int wiz_get_lane_phy_types(struct device *dev, 
struct wiz *wiz)
dev_err(dev,
"%s: Reading \"reg\" from \"%s\" failed: %d\n",
__func__, subnode->name, ret);
+   of_node_put(subnode);
return ret;
}
of_property_read_u32(subnode, "cdns,num-lanes", _lanes);
-- 
1.9.1



[PATCH] bus: qcom-ebi2: add missing of_node_put

2021-02-16 Thread angkery
From: Junlin Yang 

Fix OF node leaks by calling of_node_put in
for_each_available_child_of_node when the cycle returns.

Generated by: scripts/coccinelle/iterators/for_each_child.cocci

Signed-off-by: Junlin Yang 
---
 drivers/bus/qcom-ebi2.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/bus/qcom-ebi2.c b/drivers/bus/qcom-ebi2.c
index 03ddcf4..0b8f53a 100644
--- a/drivers/bus/qcom-ebi2.c
+++ b/drivers/bus/qcom-ebi2.c
@@ -353,8 +353,10 @@ static int qcom_ebi2_probe(struct platform_device *pdev)
 
/* Figure out the chipselect */
ret = of_property_read_u32(child, "reg", );
-   if (ret)
+   if (ret) {
+   of_node_put(child);
return ret;
+   }
 
if (csindex > 5) {
dev_err(dev,
-- 
1.9.1




[PATCH] pinctrl: equilibrium: add missing of_node_put

2021-02-16 Thread angkery
From: Junlin Yang 

Fix OF node leaks by calling of_node_put in
for_each_child_of_node when the cycle returns.

Generated by: scripts/coccinelle/iterators/for_each_child.cocci

Signed-off-by: Junlin Yang 
---
 drivers/pinctrl/pinctrl-equilibrium.c | 16 +---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-equilibrium.c 
b/drivers/pinctrl/pinctrl-equilibrium.c
index 067271b..a194d80 100644
--- a/drivers/pinctrl/pinctrl-equilibrium.c
+++ b/drivers/pinctrl/pinctrl-equilibrium.c
@@ -628,7 +628,8 @@ static int funcs_utils(struct device *dev, struct 
eqbr_pmx_func *funcs,
break;
 
default:
-   return -EINVAL;
+   of_node_put(np);
+   return -EINVAL;
}
i++;
}
@@ -707,34 +708,42 @@ static int eqbr_build_groups(struct eqbr_pinctrl_drv_data 
*drvdata)
group.num_pins = of_property_count_u32_elems(np, "pins");
if (group.num_pins < 0) {
dev_err(dev, "No pins in the group: %s\n", prop->name);
+   of_node_put(np);
return -EINVAL;
}
group.name = prop->value;
group.pins = devm_kcalloc(dev, group.num_pins,
  sizeof(*(group.pins)), GFP_KERNEL);
-   if (!group.pins)
+   if (!group.pins) {
+   of_node_put(np);
return -ENOMEM;
+   }
 
pinmux = devm_kcalloc(dev, group.num_pins, sizeof(*pinmux),
  GFP_KERNEL);
-   if (!pinmux)
+   if (!pinmux) {
+   of_node_put(np);
return -ENOMEM;
+   }
 
for (j = 0; j < group.num_pins; j++) {
if (of_property_read_u32_index(np, "pins", j, _id)) 
{
dev_err(dev, "Group %s: Read intel pins id 
failed\n",
group.name);
+   of_node_put(np);
return -EINVAL;
}
if (pin_id >= drvdata->pctl_desc.npins) {
dev_err(dev, "Group %s: Invalid pin ID, idx: 
%d, pin %u\n",
group.name, j, pin_id);
+   of_node_put(np);
return -EINVAL;
}
group.pins[j] = pin_id;
if (of_property_read_u32_index(np, "pinmux", j, 
_id)) {
dev_err(dev, "Group %s: Read intel pinmux id 
failed\n",
group.name);
+   of_node_put(np);
return -EINVAL;
}
pinmux[j] = pinmux_id;
@@ -745,6 +754,7 @@ static int eqbr_build_groups(struct eqbr_pinctrl_drv_data 
*drvdata)
pinmux);
if (err < 0) {
dev_err(dev, "Failed to register group %s\n", 
group.name);
+   of_node_put(np);
return err;
}
memset(, 0, sizeof(group));
-- 
1.9.1



[PATCH] spi: cadence-quadspi: add missing of_node_put

2021-02-15 Thread angkery
From: Junlin Yang 

Fix OF node leaks by calling of_node_put in
for_each_available_child_of_node when the cycle returns.

Generated by: scripts/coccinelle/iterators/for_each_child.cocci

Signed-off-by: Junlin Yang 
---
 drivers/spi/spi-cadence-quadspi.c | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/spi/spi-cadence-quadspi.c 
b/drivers/spi/spi-cadence-quadspi.c
index 442cc7c..14a7120 100644
--- a/drivers/spi/spi-cadence-quadspi.c
+++ b/drivers/spi/spi-cadence-quadspi.c
@@ -1389,11 +1389,13 @@ static int cqspi_setup_flash(struct cqspi_st *cqspi)
ret = of_property_read_u32(np, "reg", );
if (ret) {
dev_err(dev, "Couldn't determine chip select.\n");
+   of_node_put(np);
return ret;
}
 
if (cs >= CQSPI_MAX_CHIPSELECT) {
dev_err(dev, "Chip select %d out of range.\n", cs);
+   of_node_put(np);
return -EINVAL;
}
 
@@ -1402,8 +1404,10 @@ static int cqspi_setup_flash(struct cqspi_st *cqspi)
f_pdata->cs = cs;
 
ret = cqspi_of_get_flash_pdata(pdev, f_pdata, np);
-   if (ret)
+   if (ret) {
+   of_node_put(np);
return ret;
+   }
}
 
return 0;
-- 
1.9.1



[PATCH] pinctrl: stm32: add missing of_node_put

2021-02-15 Thread angkery
From: Junlin Yang 

Fix OF node leaks by calling of_node_put in
for_each_available_child_of_node when the cycle returns.

Generated by: scripts/coccinelle/iterators/for_each_child.cocci

Signed-off-by: Junlin Yang 
---
 drivers/pinctrl/stm32/pinctrl-stm32.c | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/pinctrl/stm32/pinctrl-stm32.c 
b/drivers/pinctrl/stm32/pinctrl-stm32.c
index 7d9bded..da72e3e 100644
--- a/drivers/pinctrl/stm32/pinctrl-stm32.c
+++ b/drivers/pinctrl/stm32/pinctrl-stm32.c
@@ -1542,8 +1542,10 @@ int stm32_pctl_probe(struct platform_device *pdev)
if (of_property_read_bool(child, "gpio-controller")) {
bank->rstc = of_reset_control_get_exclusive(child,
NULL);
-   if (PTR_ERR(bank->rstc) == -EPROBE_DEFER)
+   if (PTR_ERR(bank->rstc) == -EPROBE_DEFER) {
+   of_node_put(child);
return -EPROBE_DEFER;
+   }
 
bank->clk = of_clk_get_by_name(child, NULL);
if (IS_ERR(bank->clk)) {
@@ -1551,6 +1553,7 @@ int stm32_pctl_probe(struct platform_device *pdev)
dev_err(dev,
"failed to get clk (%ld)\n",
PTR_ERR(bank->clk));
+   of_node_put(child);
return PTR_ERR(bank->clk);
}
i++;
-- 
1.9.1




[PATCH] watchdog: diag288_wdt: Remove redundant assignment

2021-02-03 Thread angkery
From: Junlin Yang 

The assign for 'ret' is redundant and can be removed,
because it will be assigned before use.

Signed-off-by: Junlin Yang 
---
 drivers/watchdog/diag288_wdt.c | 4 
 1 file changed, 4 deletions(-)

diff --git a/drivers/watchdog/diag288_wdt.c b/drivers/watchdog/diag288_wdt.c
index aafc8d9..4cb1087 100644
--- a/drivers/watchdog/diag288_wdt.c
+++ b/drivers/watchdog/diag288_wdt.c
@@ -118,8 +118,6 @@ static int wdt_start(struct watchdog_device *dev)
if (test_and_set_bit(DIAG_WDOG_BUSY, _status))
return -EBUSY;
 
-   ret = -ENODEV;
-
if (MACHINE_IS_VM) {
ebc_cmd = kmalloc(MAX_CMDLEN, GFP_KERNEL);
if (!ebc_cmd) {
@@ -167,8 +165,6 @@ static int wdt_ping(struct watchdog_device *dev)
int ret;
unsigned int func;
 
-   ret = -ENODEV;
-
if (MACHINE_IS_VM) {
ebc_cmd = kmalloc(MAX_CMDLEN, GFP_KERNEL);
if (!ebc_cmd)
-- 
1.9.1



[PATCH v3 2/2] usb: typec: tcpci_maxim: add terminating newlines to logging

2021-01-24 Thread angkery
From: Junlin Yang 

Add terminating '\n' to the formats where missed.

Signed-off-by: Junlin Yang 
---
v3:Modify it again and submit it separately from patch 1.

 drivers/usb/typec/tcpm/tcpci_maxim.c | 12 ++--
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/usb/typec/tcpm/tcpci_maxim.c 
b/drivers/usb/typec/tcpm/tcpci_maxim.c
index 7f54f51a..5d7463c 100644
--- a/drivers/usb/typec/tcpm/tcpci_maxim.c
+++ b/drivers/usb/typec/tcpm/tcpci_maxim.c
@@ -158,7 +158,7 @@ static void process_rx(struct max_tcpci_chip *chip, u16 
status)
 */
ret = regmap_raw_read(chip->data.regmap, TCPC_RX_BYTE_CNT, rx_buf, 2);
if (ret < 0) {
-   dev_err(chip->dev, "TCPC_RX_BYTE_CNT read failed ret:%d", ret);
+   dev_err(chip->dev, "TCPC_RX_BYTE_CNT read failed ret:%d\n", 
ret);
return;
}
 
@@ -167,13 +167,13 @@ static void process_rx(struct max_tcpci_chip *chip, u16 
status)
 
if (count == 0 || frame_type != TCPC_RX_BUF_FRAME_TYPE_SOP) {
max_tcpci_write16(chip, TCPC_ALERT, TCPC_ALERT_RX_STATUS);
-   dev_err(chip->dev, "%s", count ==  0 ? "error: count is 0" :
+   dev_err(chip->dev, "%s\n", count ==  0 ? "error: count is 0" :
"error frame_type is not SOP");
return;
}
 
if (count > sizeof(struct pd_message) || count + 1 > 
TCPC_RECEIVE_BUFFER_LEN) {
-   dev_err(chip->dev, "Invalid TCPC_RX_BYTE_CNT %d", count);
+   dev_err(chip->dev, "Invalid TCPC_RX_BYTE_CNT %d\n", count);
return;
}
 
@@ -184,7 +184,7 @@ static void process_rx(struct max_tcpci_chip *chip, u16 
status)
count += 1;
ret = regmap_raw_read(chip->data.regmap, TCPC_RX_BYTE_CNT, rx_buf, 
count);
if (ret < 0) {
-   dev_err(chip->dev, "Error: TCPC_RX_BYTE_CNT read failed: %d", 
ret);
+   dev_err(chip->dev, "Error: TCPC_RX_BYTE_CNT read failed: %d\n", 
ret);
return;
}
 
@@ -317,7 +317,7 @@ static irqreturn_t _max_tcpci_irq(struct max_tcpci_chip 
*chip, u16 status)
return ret;
 
if (reg_status & TCPC_SINK_FAST_ROLE_SWAP) {
-   dev_info(chip->dev, "FRS Signal");
+   dev_info(chip->dev, "FRS Signal\n");
tcpm_sink_frs(chip->port);
}
}
@@ -460,7 +460,7 @@ static int max_tcpci_probe(struct i2c_client *client, const 
struct i2c_device_id
max_tcpci_init_regs(chip);
chip->tcpci = tcpci_register_port(chip->dev, >data);
if (IS_ERR(chip->tcpci)) {
-   dev_err(>dev, "TCPCI port registration failed");
+   dev_err(>dev, "TCPCI port registration failed\n");
return PTR_ERR(chip->tcpci);
}
chip->port = tcpci_get_tcpm_port(chip->tcpci);
-- 
1.9.1



[PATCH v3 1/2] usb: typec: tcpci_maxim: remove redundant assignment

2021-01-24 Thread angkery
From: Junlin Yang 

PTR_ERR(chip->tcpci) has been used as a return value,
it is not necessary to assign it to ret, so remove it.

Signed-off-by: Junlin Yang 
---
v3:remove the newline modification.

 drivers/usb/typec/tcpm/tcpci_maxim.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/usb/typec/tcpm/tcpci_maxim.c 
b/drivers/usb/typec/tcpm/tcpci_maxim.c
index 3192663..7f54f51a 100644
--- a/drivers/usb/typec/tcpm/tcpci_maxim.c
+++ b/drivers/usb/typec/tcpm/tcpci_maxim.c
@@ -461,7 +461,6 @@ static int max_tcpci_probe(struct i2c_client *client, const 
struct i2c_device_id
chip->tcpci = tcpci_register_port(chip->dev, >data);
if (IS_ERR(chip->tcpci)) {
dev_err(>dev, "TCPCI port registration failed");
-   ret = PTR_ERR(chip->tcpci);
return PTR_ERR(chip->tcpci);
}
chip->port = tcpci_get_tcpm_port(chip->tcpci);
-- 
1.9.1



[PATCH v2] usb: typec: tcpci_maxim: remove redundant assignment

2021-01-24 Thread angkery
From: Junlin Yang 

PTR_ERR(chip->tcpci) has been used as a return value,
it is not necessary to assign it to ret, so remove it.
And add terminating '\n' to the formats where missed too.

Signed-off-by: Junlin Yang 
---
v2: add terminating '\n' to the formats where missed too.

 drivers/usb/typec/tcpm/tcpci_maxim.c | 13 ++---
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/drivers/usb/typec/tcpm/tcpci_maxim.c 
b/drivers/usb/typec/tcpm/tcpci_maxim.c
index 3192663..5d7463c 100644
--- a/drivers/usb/typec/tcpm/tcpci_maxim.c
+++ b/drivers/usb/typec/tcpm/tcpci_maxim.c
@@ -158,7 +158,7 @@ static void process_rx(struct max_tcpci_chip *chip, u16 
status)
 */
ret = regmap_raw_read(chip->data.regmap, TCPC_RX_BYTE_CNT, rx_buf, 2);
if (ret < 0) {
-   dev_err(chip->dev, "TCPC_RX_BYTE_CNT read failed ret:%d", ret);
+   dev_err(chip->dev, "TCPC_RX_BYTE_CNT read failed ret:%d\n", 
ret);
return;
}
 
@@ -167,13 +167,13 @@ static void process_rx(struct max_tcpci_chip *chip, u16 
status)
 
if (count == 0 || frame_type != TCPC_RX_BUF_FRAME_TYPE_SOP) {
max_tcpci_write16(chip, TCPC_ALERT, TCPC_ALERT_RX_STATUS);
-   dev_err(chip->dev, "%s", count ==  0 ? "error: count is 0" :
+   dev_err(chip->dev, "%s\n", count ==  0 ? "error: count is 0" :
"error frame_type is not SOP");
return;
}
 
if (count > sizeof(struct pd_message) || count + 1 > 
TCPC_RECEIVE_BUFFER_LEN) {
-   dev_err(chip->dev, "Invalid TCPC_RX_BYTE_CNT %d", count);
+   dev_err(chip->dev, "Invalid TCPC_RX_BYTE_CNT %d\n", count);
return;
}
 
@@ -184,7 +184,7 @@ static void process_rx(struct max_tcpci_chip *chip, u16 
status)
count += 1;
ret = regmap_raw_read(chip->data.regmap, TCPC_RX_BYTE_CNT, rx_buf, 
count);
if (ret < 0) {
-   dev_err(chip->dev, "Error: TCPC_RX_BYTE_CNT read failed: %d", 
ret);
+   dev_err(chip->dev, "Error: TCPC_RX_BYTE_CNT read failed: %d\n", 
ret);
return;
}
 
@@ -317,7 +317,7 @@ static irqreturn_t _max_tcpci_irq(struct max_tcpci_chip 
*chip, u16 status)
return ret;
 
if (reg_status & TCPC_SINK_FAST_ROLE_SWAP) {
-   dev_info(chip->dev, "FRS Signal");
+   dev_info(chip->dev, "FRS Signal\n");
tcpm_sink_frs(chip->port);
}
}
@@ -460,8 +460,7 @@ static int max_tcpci_probe(struct i2c_client *client, const 
struct i2c_device_id
max_tcpci_init_regs(chip);
chip->tcpci = tcpci_register_port(chip->dev, >data);
if (IS_ERR(chip->tcpci)) {
-   dev_err(>dev, "TCPCI port registration failed");
-   ret = PTR_ERR(chip->tcpci);
+   dev_err(>dev, "TCPCI port registration failed\n");
return PTR_ERR(chip->tcpci);
}
chip->port = tcpci_get_tcpm_port(chip->tcpci);
-- 
1.9.1



[PATCH] usb: typec: tcpci_maxim: remove redundant assignment

2021-01-23 Thread angkery
From: Junlin Yang 

PTR_ERR(chip->tcpci) has been used as a return value,
it is not necessary to assign it to ret, so remove it.

Signed-off-by: Junlin Yang 
---
 drivers/usb/typec/tcpm/tcpci_maxim.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/usb/typec/tcpm/tcpci_maxim.c 
b/drivers/usb/typec/tcpm/tcpci_maxim.c
index 3192663..7f54f51a 100644
--- a/drivers/usb/typec/tcpm/tcpci_maxim.c
+++ b/drivers/usb/typec/tcpm/tcpci_maxim.c
@@ -461,7 +461,6 @@ static int max_tcpci_probe(struct i2c_client *client, const 
struct i2c_device_id
chip->tcpci = tcpci_register_port(chip->dev, >data);
if (IS_ERR(chip->tcpci)) {
dev_err(>dev, "TCPCI port registration failed");
-   ret = PTR_ERR(chip->tcpci);
return PTR_ERR(chip->tcpci);
}
chip->port = tcpci_get_tcpm_port(chip->tcpci);
-- 
1.9.1




[PATCH] power: supply: charger-manager: fix typo

2021-01-20 Thread angkery
From: Junlin Yang 

Change 'exeeds' to 'exceeds'.

Signed-off-by: Junlin Yang 
---
 drivers/power/supply/charger-manager.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/power/supply/charger-manager.c 
b/drivers/power/supply/charger-manager.c
index 6fcebe4..731351d8 100644
--- a/drivers/power/supply/charger-manager.c
+++ b/drivers/power/supply/charger-manager.c
@@ -570,7 +570,7 @@ static int cm_get_target_status(struct charger_manager *cm)
return POWER_SUPPLY_STATUS_DISCHARGING;
 
if (cm_check_thermal_status(cm)) {
-   /* Check if discharging duration exeeds limit. */
+   /* Check if discharging duration exceeds limit. */
if (check_charging_duration(cm))
goto charging_ok;
return POWER_SUPPLY_STATUS_NOT_CHARGING;
@@ -578,7 +578,7 @@ static int cm_get_target_status(struct charger_manager *cm)
 
switch (cm->battery_status) {
case POWER_SUPPLY_STATUS_CHARGING:
-   /* Check if charging duration exeeds limit. */
+   /* Check if charging duration exceeds limit. */
if (check_charging_duration(cm))
return POWER_SUPPLY_STATUS_FULL;
fallthrough;
-- 
1.9.1




[PATCH] can: mcp251xfd: mcp251xfd_handle_ivmif(): fix wrong NULL pointer check

2021-01-18 Thread angkery
From: Junlin Yang 

if alloc_can_err_skb() returns NULL, we should check skb instead of cf.

Signed-off-by: Junlin Yang 
---
 drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c 
b/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c
index f07e8b7..0af131c 100644
--- a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c
+++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c
@@ -1755,7 +1755,7 @@ static int mcp251xfd_handle_ivmif(struct mcp251xfd_priv 
*priv)
cf->data[2] |= CAN_ERR_PROT_TX | CAN_ERR_PROT_BIT0;
}
 
-   if (!cf)
+   if (!skb)
return 0;
 
err = can_rx_offload_queue_sorted(>offload, skb, timestamp);
-- 
1.9.1




[PATCH] power: supply: charger-manager: fix the wrong status of health

2021-01-16 Thread angkery
From: Junlin Yang 

cm->emergency_stop will only be the value in the enumeration,
and can not be less than zero, it will get an exception value.
So replace it with the corresponding value.

Signed-off-by: Junlin Yang 
---
 drivers/power/supply/charger-manager.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/power/supply/charger-manager.c 
b/drivers/power/supply/charger-manager.c
index 6fcebe4..0d28741 100644
--- a/drivers/power/supply/charger-manager.c
+++ b/drivers/power/supply/charger-manager.c
@@ -723,9 +723,9 @@ static int charger_get_property(struct power_supply *psy,
val->intval = cm->battery_status;
break;
case POWER_SUPPLY_PROP_HEALTH:
-   if (cm->emergency_stop > 0)
+   if (cm->emergency_stop == CM_BATT_OVERHEAT)
val->intval = POWER_SUPPLY_HEALTH_OVERHEAT;
-   else if (cm->emergency_stop < 0)
+   else if (cm->emergency_stop == CM_BATT_COLD)
val->intval = POWER_SUPPLY_HEALTH_COLD;
else
val->intval = POWER_SUPPLY_HEALTH_GOOD;
-- 
1.9.1