Re: [PATCH][next] staging: wilc1000: remove redundant assignment to variable result

2020-01-16 Thread Claudiu.Beznea



On 14.01.2020 19:27, Colin King wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the 
> content is safe
> 
> From: Colin Ian King 
> 
> The variable result is being initialized with a value that
> is never read and is being re-assigned later on. The assignment
> is redundant and hence can be removed.
> 
> Addresses-Coverity: ("Unused value")
> Signed-off-by: Colin Ian King 

Reviewed-by: Claudiu Beznea 

> ---
>  drivers/staging/wilc1000/spi.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/staging/wilc1000/spi.c b/drivers/staging/wilc1000/spi.c
> index 55f8757325f0..8694ab5fcb22 100644
> --- a/drivers/staging/wilc1000/spi.c
> +++ b/drivers/staging/wilc1000/spi.c
> @@ -733,7 +733,7 @@ static int spi_internal_read(struct wilc *wilc, u32 adr, 
> u32 *data)
>  static int wilc_spi_write_reg(struct wilc *wilc, u32 addr, u32 data)
>  {
> struct spi_device *spi = to_spi_device(wilc->dev);
> -   int result = N_OK;
> +   int result;
> u8 cmd = CMD_SINGLE_WRITE;
> u8 clockless = 0;
> 
> @@ -782,7 +782,7 @@ static int wilc_spi_write(struct wilc *wilc, u32 addr, u8 
> *buf, u32 size)
>  static int wilc_spi_read_reg(struct wilc *wilc, u32 addr, u32 *data)
>  {
> struct spi_device *spi = to_spi_device(wilc->dev);
> -   int result = N_OK;
> +   int result;
> u8 cmd = CMD_SINGLE_READ;
> u8 clockless = 0;
> 
> --
> 2.24.0
> 
> 
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[driver-core:debugfs_cleanup] BUILD SUCCESS e72e05ef0e56cf2fe9c81c8b0bc679fd16b80688

2020-01-16 Thread kbuild test robot
tree/branch: 
https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git  
debugfs_cleanup
branch HEAD: e72e05ef0e56cf2fe9c81c8b0bc679fd16b80688  debugfs: remove return 
value of debugfs_create_regset32()

elapsed time: 1668m

configs tested: 69
configs skipped: 0

The following configs have been built successfully.
More configs may be tested in the coming days.

um  defconfig
um i386_defconfig
um   x86_64_defconfig
h8300 edosk2674_defconfig
h8300h8300h-sim_defconfig
h8300   h8s-sim_defconfig
m68k allmodconfig
m68k   m5475evb_defconfig
m68k  multi_defconfig
m68k   sun3_defconfig
c6x  allyesconfig
c6xevmc6678_defconfig
nios2 10m50_defconfig
nios2 3c120_defconfig
openriscor1ksim_defconfig
openrisc simple_smp_defconfig
xtensa   common_defconfig
xtensa  iss_defconfig
sh   allmodconfig
shallnoconfig
sh  rsk7269_defconfig
sh  sh7785lcr_32bit_defconfig
shtitan_defconfig
alpha   defconfig
cskydefconfig
nds32 allnoconfig
nds32   defconfig
x86_64  fedora-25
x86_64  kexec
x86_64lkp
x86_64   rhel
x86_64   rhel-7.6
s390 alldefconfig
s390 allmodconfig
s390  allnoconfig
s390 allyesconfig
s390  debug_defconfig
s390defconfig
s390   zfcpdump_defconfig
ia64 alldefconfig
ia64 allmodconfig
ia64  allnoconfig
ia64 allyesconfig
ia64defconfig
arc  randconfig-a001-20200116
arm  randconfig-a001-20200116
arm64randconfig-a001-20200116
ia64 randconfig-a001-20200116
powerpc  randconfig-a001-20200116
sparcrandconfig-a001-20200116
csky randconfig-a001-20200116
openrisc randconfig-a001-20200116
s390 randconfig-a001-20200116
sh   randconfig-a001-20200116
xtensa   randconfig-a001-20200116
x86_64   randconfig-d001-20200116
x86_64   randconfig-d002-20200116
x86_64   randconfig-d003-20200116
i386 randconfig-d001-20200116
i386 randconfig-d002-20200116
i386 randconfig-d003-20200116
arc  allyesconfig
arc defconfig
microblaze  mmu_defconfig
microblazenommu_defconfig
powerpc   allnoconfig
powerpc defconfig
powerpc   ppc64_defconfig
powerpc  rhel-kconfig

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org Intel Corporation
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[driver-core:driver-core-testing] BUILD SUCCESS a37f4958f7b63d2b3cd17a76151fdfc29ce1da5f

2020-01-16 Thread kbuild test robot
tree/branch: 
https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git  
driver-core-testing
branch HEAD: a37f4958f7b63d2b3cd17a76151fdfc29ce1da5f  debugfs: Return -EPERM 
when locked down

elapsed time: 1833m

configs tested: 141
configs skipped: 0

The following configs have been built successfully.
More configs may be tested in the coming days.

alpha   defconfig
cskydefconfig
nds32 allnoconfig
nds32   defconfig
pariscallnoconfig
pariscallyesonfig
parisc b180_defconfig
pariscc3000_defconfig
parisc  defconfig
um  defconfig
um i386_defconfig
um   x86_64_defconfig
c6x  allyesconfig
c6xevmc6678_defconfig
nios2 10m50_defconfig
nios2 3c120_defconfig
openriscor1ksim_defconfig
openrisc simple_smp_defconfig
xtensa   common_defconfig
xtensa  iss_defconfig
sparcallyesconfig
sparc   defconfig
sparc64  allmodconfig
sparc64   allnoconfig
sparc64  allyesconfig
sparc64 defconfig
h8300 edosk2674_defconfig
h8300h8300h-sim_defconfig
h8300   h8s-sim_defconfig
m68k allmodconfig
m68k   m5475evb_defconfig
m68k  multi_defconfig
m68k   sun3_defconfig
riscvallmodconfig
riscv allnoconfig
riscvallyesconfig
riscv   defconfig
riscvnommu_virt_defconfig
riscv  rv32_defconfig
arm  allmodconfig
arm   allnoconfig
arm  allyesconfig
arm at91_dt_defconfig
arm   efm32_defconfig
arm  exynos_defconfig
armmulti_v5_defconfig
armmulti_v7_defconfig
armshmobile_defconfig
arm   sunxi_defconfig
arm64allmodconfig
arm64 allnoconfig
arm64allyesconfig
arm64   defconfig
alpharandconfig-a001-20200116
m68k randconfig-a001-20200116
mips randconfig-a001-20200116
nds32randconfig-a001-20200116
parisc   randconfig-a001-20200116
riscvrandconfig-a001-20200116
x86_64   randconfig-b001-20200116
x86_64   randconfig-b002-20200116
x86_64   randconfig-b003-20200116
i386 randconfig-b001-20200116
i386 randconfig-b002-20200116
i386 randconfig-b003-20200116
i386 alldefconfig
i386  allnoconfig
i386 allyesconfig
i386defconfig
sh   allmodconfig
shallnoconfig
sh  rsk7269_defconfig
sh  sh7785lcr_32bit_defconfig
shtitan_defconfig
x86_64  fedora-25
x86_64  kexec
x86_64lkp
x86_64   rhel
x86_64   rhel-7.6
arc  allyesconfig
arc defconfig
microblaze  mmu_defconfig
microblazenommu_defconfig
powerpc   allnoconfig
powerpc defconfig
powerpc   ppc64_defconfig
powerpc  rhel-kconfig
arc  randconfig-a001-20200116
arm  randconfig-a001-20200116
arm64randconfig-a001-20200116
ia64 randconfig-a001-20200116
powerpc  randconfig-a001-20200116
sparcrandconfig-a001-20200116
ia64 alldefconfig
ia64 allmodconfig
ia64  allnoconfig
ia64 allyesconfig
ia64defconfig
x86_64   randconfig-f001-20200116
x86_64   randconfig-f002-20200116
x86_64   randconfig

[driver-core:debugfs_remove_return_value] BUILD SUCCESS 25ea9282415f494178fe1b0130e3bd5621278554

2020-01-16 Thread kbuild test robot
tree/branch: 
https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git  
debugfs_remove_return_value
branch HEAD: 25ea9282415f494178fe1b0130e3bd5621278554  debugfs: remove return 
value of debugfs_create_regset32()

elapsed time: 1833m

configs tested: 141
configs skipped: 0

The following configs have been built successfully.
More configs may be tested in the coming days.

um  defconfig
um i386_defconfig
um   x86_64_defconfig
c6x  allyesconfig
c6xevmc6678_defconfig
nios2 10m50_defconfig
nios2 3c120_defconfig
openriscor1ksim_defconfig
openrisc simple_smp_defconfig
xtensa   common_defconfig
xtensa  iss_defconfig
pariscallnoconfig
pariscallyesonfig
parisc b180_defconfig
pariscc3000_defconfig
parisc  defconfig
sparcallyesconfig
sparc   defconfig
sparc64  allmodconfig
sparc64   allnoconfig
sparc64  allyesconfig
sparc64 defconfig
h8300 edosk2674_defconfig
h8300h8300h-sim_defconfig
h8300   h8s-sim_defconfig
m68k allmodconfig
m68k   m5475evb_defconfig
m68k  multi_defconfig
m68k   sun3_defconfig
riscvallmodconfig
riscv allnoconfig
riscvallyesconfig
riscv   defconfig
riscvnommu_virt_defconfig
riscv  rv32_defconfig
arm  allmodconfig
arm   allnoconfig
arm  allyesconfig
arm at91_dt_defconfig
arm   efm32_defconfig
arm  exynos_defconfig
armmulti_v5_defconfig
armmulti_v7_defconfig
armshmobile_defconfig
arm   sunxi_defconfig
arm64allmodconfig
arm64 allnoconfig
arm64allyesconfig
arm64   defconfig
alpharandconfig-a001-20200116
m68k randconfig-a001-20200116
mips randconfig-a001-20200116
nds32randconfig-a001-20200116
parisc   randconfig-a001-20200116
riscvrandconfig-a001-20200116
x86_64   randconfig-b001-20200116
x86_64   randconfig-b002-20200116
x86_64   randconfig-b003-20200116
i386 randconfig-b001-20200116
i386 randconfig-b002-20200116
i386 randconfig-b003-20200116
i386 alldefconfig
i386  allnoconfig
i386 allyesconfig
i386defconfig
sh   allmodconfig
shallnoconfig
sh  rsk7269_defconfig
sh  sh7785lcr_32bit_defconfig
shtitan_defconfig
arc  allyesconfig
arc defconfig
microblaze  mmu_defconfig
microblazenommu_defconfig
powerpc   allnoconfig
powerpc defconfig
powerpc   ppc64_defconfig
powerpc  rhel-kconfig
ia64 alldefconfig
ia64 allmodconfig
ia64  allnoconfig
ia64 allyesconfig
ia64defconfig
alpha   defconfig
cskydefconfig
nds32 allnoconfig
nds32   defconfig
x86_64   randconfig-f001-20200116
x86_64   randconfig-f002-20200116
x86_64   randconfig-f003-20200116
i386 randconfig-f001-20200116
i386 randconfig-f002-20200116
i386 randconfig-f003-20200116
mips   32r2_defconfig
mips 64r6el_defconfig
mips allmodconfig
mips  allnoconfig
mips allyesconfig
mips  fuloong2e_defconfig
mips  malta_kvm_defconfig
x86_64

[PATCH AUTOSEL 5.4 123/205] media: cedrus: Use correct H264 8x8 scaling list

2020-01-16 Thread Sasha Levin
From: Jonas Karlman 

[ Upstream commit a6b8feae7c88343212686120740cf7551dd16e08 ]

Documentation now defines the expected order of scaling lists,
change to use correct indices.

Fixes: 6eb9b758e307 ("media: cedrus: Add H264 decoding support")
Signed-off-by: Jonas Karlman 
Reviewed-by: Philipp Zabel 
Signed-off-by: Hans Verkuil 
Signed-off-by: Mauro Carvalho Chehab 
Signed-off-by: Sasha Levin 
---
 drivers/staging/media/sunxi/cedrus/cedrus_h264.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_h264.c 
b/drivers/staging/media/sunxi/cedrus/cedrus_h264.c
index 08c6c9c410cc..c07526c12629 100644
--- a/drivers/staging/media/sunxi/cedrus/cedrus_h264.c
+++ b/drivers/staging/media/sunxi/cedrus/cedrus_h264.c
@@ -244,8 +244,8 @@ static void cedrus_write_scaling_lists(struct cedrus_ctx 
*ctx,
   sizeof(scaling->scaling_list_8x8[0]));
 
cedrus_h264_write_sram(dev, CEDRUS_SRAM_H264_SCALING_LIST_8x8_1,
-  scaling->scaling_list_8x8[3],
-  sizeof(scaling->scaling_list_8x8[3]));
+  scaling->scaling_list_8x8[1],
+  sizeof(scaling->scaling_list_8x8[1]));
 
cedrus_h264_write_sram(dev, CEDRUS_SRAM_H264_SCALING_LIST_4x4,
   scaling->scaling_list_4x4,
-- 
2.20.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH AUTOSEL 5.4 125/205] media: hantro: Set H264 FIELDPIC_FLAG_E flag correctly

2020-01-16 Thread Sasha Levin
From: Jonas Karlman 

[ Upstream commit a2cbf80a842add9663522bf898cf13cb2ac4e423 ]

The FIELDPIC_FLAG_E bit should be set when field_pic_flag exists in stream,
it is currently set based on field_pic_flag of current frame.
The PIC_FIELDMODE_E bit is correctly set based on the field_pic_flag.

Fix this by setting the FIELDPIC_FLAG_E bit when frame_mbs_only is not set.

Fixes: dea0a82f3d22 ("media: hantro: Add support for H264 decoding on G1")
Signed-off-by: Jonas Karlman 
Reviewed-by: Boris Brezillon 
Signed-off-by: Hans Verkuil 
Signed-off-by: Mauro Carvalho Chehab 
Signed-off-by: Sasha Levin 
---
 drivers/staging/media/hantro/hantro_g1_h264_dec.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/media/hantro/hantro_g1_h264_dec.c 
b/drivers/staging/media/hantro/hantro_g1_h264_dec.c
index 636bf972adcf..5f29b7a836db 100644
--- a/drivers/staging/media/hantro/hantro_g1_h264_dec.c
+++ b/drivers/staging/media/hantro/hantro_g1_h264_dec.c
@@ -63,7 +63,7 @@ static void set_params(struct hantro_ctx *ctx)
/* always use the matrix sent from userspace */
reg |= G1_REG_DEC_CTRL2_TYPE1_QUANT_E;
 
-   if (slices[0].flags &  V4L2_H264_SLICE_FLAG_FIELD_PIC)
+   if (!(sps->flags & V4L2_H264_SPS_FLAG_FRAME_MBS_ONLY))
reg |= G1_REG_DEC_CTRL2_FIELDPIC_FLAG_E;
vdpu_write_relaxed(vpu, reg, G1_REG_DEC_CTRL2);
 
-- 
2.20.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH AUTOSEL 4.19 031/671] staging: comedi: ni_mio_common: protect register write overflow

2020-01-16 Thread Sasha Levin
From: "Spencer E. Olson" 

[ Upstream commit 1cbca5852d6c16e85a21487a15d211195aacd4a1 ]

Fixes two problems introduced as early as
commit 03aef4b6dc12  ("Staging: comedi: add ni_mio_common code"):
(1) Ensures that the last four bits of NISTC_RTSI_TRIGB_OUT_REG register is
not unduly overwritten on e-series devices.  On e-series devices, the
first three of the last four bits are reserved.  The last bit defines
the output selection of the RGOUT0 pin, otherwise known as
RTSI_Sub_Selection.  For m-series devices, these last four bits are
indeed used as the output selection of the RTSI7 pin (and the
RTSI_Sub_Selection bit for the RGOUT0 pin is moved to the
RTSI_Trig_Direction register.
(2) Allows all 4 RTSI_BRD lines to be treated as valid sources for RTSI
lines.

This patch also cleans up the ni_get_rtsi_routing command for readability.

Fixes: 03aef4b6dc12  ("Staging: comedi: add ni_mio_common code")
Signed-off-by: Spencer E. Olson 
Reviewed-by: Ian Abbott 
Signed-off-by: Greg Kroah-Hartman 
Signed-off-by: Sasha Levin 
---
 .../staging/comedi/drivers/ni_mio_common.c| 24 +--
 1 file changed, 17 insertions(+), 7 deletions(-)

diff --git a/drivers/staging/comedi/drivers/ni_mio_common.c 
b/drivers/staging/comedi/drivers/ni_mio_common.c
index d799b1b55de3..747518c29542 100644
--- a/drivers/staging/comedi/drivers/ni_mio_common.c
+++ b/drivers/staging/comedi/drivers/ni_mio_common.c
@@ -4984,7 +4984,10 @@ static int ni_valid_rtsi_output_source(struct 
comedi_device *dev,
case NI_RTSI_OUTPUT_G_SRC0:
case NI_RTSI_OUTPUT_G_GATE0:
case NI_RTSI_OUTPUT_RGOUT0:
-   case NI_RTSI_OUTPUT_RTSI_BRD_0:
+   case NI_RTSI_OUTPUT_RTSI_BRD(0):
+   case NI_RTSI_OUTPUT_RTSI_BRD(1):
+   case NI_RTSI_OUTPUT_RTSI_BRD(2):
+   case NI_RTSI_OUTPUT_RTSI_BRD(3):
return 1;
case NI_RTSI_OUTPUT_RTSI_OSC:
return (devpriv->is_m_series) ? 1 : 0;
@@ -5005,11 +5008,18 @@ static int ni_set_rtsi_routing(struct comedi_device 
*dev,
devpriv->rtsi_trig_a_output_reg |= NISTC_RTSI_TRIG(chan, src);
ni_stc_writew(dev, devpriv->rtsi_trig_a_output_reg,
  NISTC_RTSI_TRIGA_OUT_REG);
-   } else if (chan < 8) {
+   } else if (chan < NISTC_RTSI_TRIG_NUM_CHAN(devpriv->is_m_series)) {
devpriv->rtsi_trig_b_output_reg &= ~NISTC_RTSI_TRIG_MASK(chan);
devpriv->rtsi_trig_b_output_reg |= NISTC_RTSI_TRIG(chan, src);
ni_stc_writew(dev, devpriv->rtsi_trig_b_output_reg,
  NISTC_RTSI_TRIGB_OUT_REG);
+   } else if (chan != NISTC_RTSI_TRIG_OLD_CLK_CHAN) {
+   /* probably should never reach this, since the
+* ni_valid_rtsi_output_source above errors out if chan is too
+* high
+*/
+   dev_err(dev->class_dev, "%s: unknown rtsi channel\n", __func__);
+   return -EINVAL;
}
return 2;
 }
@@ -5025,12 +5035,12 @@ static unsigned int ni_get_rtsi_routing(struct 
comedi_device *dev,
} else if (chan < NISTC_RTSI_TRIG_NUM_CHAN(devpriv->is_m_series)) {
return NISTC_RTSI_TRIG_TO_SRC(chan,
  devpriv->rtsi_trig_b_output_reg);
-   } else {
-   if (chan == NISTC_RTSI_TRIG_OLD_CLK_CHAN)
-   return NI_RTSI_OUTPUT_RTSI_OSC;
-   dev_err(dev->class_dev, "bug! should never get here?\n");
-   return 0;
+   } else if (chan == NISTC_RTSI_TRIG_OLD_CLK_CHAN) {
+   return NI_RTSI_OUTPUT_RTSI_OSC;
}
+
+   dev_err(dev->class_dev, "%s: unknown rtsi channel\n", __func__);
+   return -EINVAL;
 }
 
 static int ni_rtsi_insn_config(struct comedi_device *dev,
-- 
2.20.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH AUTOSEL 4.19 065/671] staging: bcm2835-camera: fix module autoloading

2020-01-16 Thread Sasha Levin
From: Stefan Wahren 

[ Upstream commit 3a2c20024a2b47adbf514e7f3ab79342739c3926 ]

In order to make the module bcm2835-camera load automatically, we need to
add a module alias.

Fixes: 4bebb0312ea9 ("staging/bcm2835-camera: Set ourselves up as a platform 
driver.")
Signed-off-by: Stefan Wahren 
Reviewed-by: Nicolas Saenz Julienne 
Reviewed-by: Dan Carpenter 
Signed-off-by: Greg Kroah-Hartman 
Signed-off-by: Sasha Levin 
---
 drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c 
b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
index 068e5b9ab232..edf25922b12d 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
@@ -47,6 +47,7 @@ MODULE_DESCRIPTION("Broadcom 2835 MMAL video capture");
 MODULE_AUTHOR("Vincent Sanders");
 MODULE_LICENSE("GPL");
 MODULE_VERSION(BM2835_MMAL_VERSION);
+MODULE_ALIAS("platform:bcm2835-camera");
 
 int bcm2835_v4l2_debug;
 module_param_named(debug, bcm2835_v4l2_debug, int, 0644);
-- 
2.20.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH AUTOSEL 4.19 064/671] staging: bcm2835-camera: Abort probe if there is no camera

2020-01-16 Thread Sasha Levin
From: Stefan Wahren 

[ Upstream commit 7566f39dfdc11f8a97d5810c6e6295a88f97ef91 ]

Abort the probing of the camera driver in case there isn't a camera
actually connected to the Raspberry Pi. This solution also avoids a
NULL ptr dereference of mmal instance on driver unload.

Fixes: 7b3ad5abf027 ("staging: Import the BCM2835 MMAL-based V4L2 camera 
driver.")
Signed-off-by: Stefan Wahren 
Reviewed-by: Nicolas Saenz Julienne 
Reviewed-by: Dan Carpenter 
Signed-off-by: Greg Kroah-Hartman 
Signed-off-by: Sasha Levin 
---
 .../vc04_services/bcm2835-camera/bcm2835-camera.c| 9 +
 1 file changed, 9 insertions(+)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c 
b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
index 455082867246..068e5b9ab232 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
@@ -1854,6 +1854,12 @@ static int bcm2835_mmal_probe(struct platform_device 
*pdev)
num_cameras = get_num_cameras(instance,
  resolutions,
  MAX_BCM2835_CAMERAS);
+
+   if (num_cameras < 1) {
+   ret = -ENODEV;
+   goto cleanup_mmal;
+   }
+
if (num_cameras > MAX_BCM2835_CAMERAS)
num_cameras = MAX_BCM2835_CAMERAS;
 
@@ -1953,6 +1959,9 @@ static int bcm2835_mmal_probe(struct platform_device 
*pdev)
pr_info("%s: error %d while loading driver\n",
BM2835_MMAL_MODULE_NAME, ret);
 
+cleanup_mmal:
+   vchiq_mmal_finalise(instance);
+
return ret;
 }
 
-- 
2.20.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH AUTOSEL 4.19 154/671] staging: most: cdev: add missing check for cdev_add failure

2020-01-16 Thread Sasha Levin
From: Colin Ian King 

[ Upstream commit 5ae890780e1b4d08f2c0c5d4ea96fc3928fc0ee9 ]

Currently the call to cdev_add is missing a check for failure. Fix this by
checking for failure and exiting via a new error path that ensures the
allocated comp_channel struct is kfree'd.

Detected by CoverityScan, CID#1462359 ("Unchecked return value")

Fixes: 9bc79bbcd0c5 ("Staging: most: add MOST driver's aim-cdev module")
Signed-off-by: Colin Ian King 
Signed-off-by: Greg Kroah-Hartman 
Signed-off-by: Sasha Levin 
---
 drivers/staging/most/cdev/cdev.c | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/most/cdev/cdev.c b/drivers/staging/most/cdev/cdev.c
index 0b48677fa958..27d58b55b810 100644
--- a/drivers/staging/most/cdev/cdev.c
+++ b/drivers/staging/most/cdev/cdev.c
@@ -453,7 +453,9 @@ static int comp_probe(struct most_interface *iface, int 
channel_id,
c->devno = MKDEV(comp.major, current_minor);
cdev_init(&c->cdev, &channel_fops);
c->cdev.owner = THIS_MODULE;
-   cdev_add(&c->cdev, c->devno, 1);
+   retval = cdev_add(&c->cdev, c->devno, 1);
+   if (retval < 0)
+   goto err_free_c;
c->iface = iface;
c->cfg = cfg;
c->channel_id = channel_id;
@@ -485,6 +487,7 @@ static int comp_probe(struct most_interface *iface, int 
channel_id,
list_del(&c->list);
 error_alloc_kfifo:
cdev_del(&c->cdev);
+err_free_c:
kfree(c);
 error_alloc_channel:
ida_simple_remove(&comp.minor_id, current_minor);
-- 
2.20.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH AUTOSEL 4.19 209/671] staging: rtlwifi: Use proper enum for return in halmac_parse_psd_data_88xx

2020-01-16 Thread Sasha Levin
From: Nathan Chancellor 

[ Upstream commit e8edc32d70a4e09160835792eb5d1af71a0eec14 ]

Clang warns:

drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c:2472:11:
warning: implicit conversion from enumeration type 'enum
halmac_cmd_process_status' to different enumeration type 'enum
halmac_ret_status' [-Wenum-conversion]
return HALMAC_CMD_PROCESS_ERROR;
~~ ^~~~
1 warning generated.

Fix this by using the proper enum for allocation failures,
HALMAC_RET_MALLOC_FAIL, which is used in the rest of this file.

Fixes: e4b08e16b7d9 ("staging: r8822be: check kzalloc return or bail")
Link: https://github.com/ClangBuiltLinux/linux/issues/375
Signed-off-by: Nathan Chancellor 
Reviewed-by: Nicholas Mc Guire 
Signed-off-by: Greg Kroah-Hartman 
Signed-off-by: Sasha Levin 
---
 drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c 
b/drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c
index ec742da030db..ddbeff8224ab 100644
--- a/drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c
+++ b/drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c
@@ -2469,7 +2469,7 @@ halmac_parse_psd_data_88xx(struct halmac_adapter 
*halmac_adapter, u8 *c2h_buf,
if (!psd_set->data) {
psd_set->data = kzalloc(psd_set->data_size, GFP_KERNEL);
if (!psd_set->data)
-   return HALMAC_CMD_PROCESS_ERROR;
+   return HALMAC_RET_MALLOC_FAIL;
}
 
if (segment_id == 0)
-- 
2.20.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH AUTOSEL 4.19 193/671] staging: r8822be: check kzalloc return or bail

2020-01-16 Thread Sasha Levin
From: Nicholas Mc Guire 

[ Upstream commit e4b08e16b7d9d030b6475ef48f94d734a39f3c81 ]

The kzalloc() in halmac_parse_psd_data_88xx() can fail and return NULL
so check the psd_set->data after allocation and if allocation failed
return HALMAC_CMD_PROCESS_ERROR.

Signed-off-by: Nicholas Mc Guire 
Fixes: 938a0447f094 ("staging: r8822be: Add code for halmac sub-drive")
Signed-off-by: Greg Kroah-Hartman 
Signed-off-by: Sasha Levin 
---
 .../staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c| 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c 
b/drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c
index 53f55f129a76..ec742da030db 100644
--- a/drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c
+++ b/drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c
@@ -2466,8 +2466,11 @@ halmac_parse_psd_data_88xx(struct halmac_adapter 
*halmac_adapter, u8 *c2h_buf,
segment_size = (u8)PSD_DATA_GET_SEGMENT_SIZE(c2h_buf);
psd_set->data_size = total_size;
 
-   if (!psd_set->data)
+   if (!psd_set->data) {
psd_set->data = kzalloc(psd_set->data_size, GFP_KERNEL);
+   if (!psd_set->data)
+   return HALMAC_CMD_PROCESS_ERROR;
+   }
 
if (segment_id == 0)
psd_set->segment_size = segment_size;
-- 
2.20.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH AUTOSEL 4.19 296/671] staging: android: vsoc: fix copy_from_user overrun

2020-01-16 Thread Sasha Levin
From: Vincent Stehlé 

[ Upstream commit 060ea4271a82270be6d44e8e9aefe8f155fb5626 ]

The `np->permission' structure is smaller than the `np' structure but
sizeof(*np) worth of data is copied in there. Fix the size passed to
copy_from_user() to avoid overrun.

Fixes: 3d2ec9dcd553 ("staging: Android: Add 'vsoc' driver for cuttlefish.")
Signed-off-by: Vincent Stehlé 
Cc: Greg Kroah-Hartman 
Reviewed-by: Dan Carpenter 
Signed-off-by: Greg Kroah-Hartman 
Signed-off-by: Sasha Levin 
---
 drivers/staging/android/vsoc.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/android/vsoc.c b/drivers/staging/android/vsoc.c
index 22571abcaa4e..034d86869772 100644
--- a/drivers/staging/android/vsoc.c
+++ b/drivers/staging/android/vsoc.c
@@ -260,7 +260,8 @@ do_create_fd_scoped_permission(struct vsoc_device_region 
*region_p,
atomic_t *owner_ptr = NULL;
struct vsoc_device_region *managed_region_p;
 
-   if (copy_from_user(&np->permission, &arg->perm, sizeof(*np)) ||
+   if (copy_from_user(&np->permission,
+  &arg->perm, sizeof(np->permission)) ||
copy_from_user(&managed_fd,
   &arg->managed_region_fd, sizeof(managed_fd))) {
return -EFAULT;
-- 
2.20.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH AUTOSEL 4.19 387/671] media: Staging: media: Release the correct resource in an error handling path

2020-01-16 Thread Sasha Levin
From: Christophe JAILLET 

[ Upstream commit 3b6471c7becd06325eb5e701cc2602b2edbbc7b6 ]

'res' is reassigned several times in the function and if we 'goto
error_unmap', its value is not the returned value of 'request_mem_region()'
anymore.

Introduce a new 'struct resource *' variable (i.e. res2) to keep a pointer
to the right resource, if needed in the error handling path.

Fixes: 4b4eda001704 ("Staging: media: Unmap and release region obtained by 
ioremap_nocache")

Signed-off-by: Christophe JAILLET 
Signed-off-by: Mauro Carvalho Chehab 
Signed-off-by: Sasha Levin 
---
 drivers/staging/media/davinci_vpfe/dm365_ipipe.c | 10 +-
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/media/davinci_vpfe/dm365_ipipe.c 
b/drivers/staging/media/davinci_vpfe/dm365_ipipe.c
index 95942768639c..7bf2648affc0 100644
--- a/drivers/staging/media/davinci_vpfe/dm365_ipipe.c
+++ b/drivers/staging/media/davinci_vpfe/dm365_ipipe.c
@@ -1777,7 +1777,7 @@ vpfe_ipipe_init(struct vpfe_ipipe_device *ipipe, struct 
platform_device *pdev)
struct media_pad *pads = &ipipe->pads[0];
struct v4l2_subdev *sd = &ipipe->subdev;
struct media_entity *me = &sd->entity;
-   struct resource *res, *memres;
+   struct resource *res, *res2, *memres;
 
res = platform_get_resource(pdev, IORESOURCE_MEM, 4);
if (!res)
@@ -1791,11 +1791,11 @@ vpfe_ipipe_init(struct vpfe_ipipe_device *ipipe, struct 
platform_device *pdev)
if (!ipipe->base_addr)
goto error_release;
 
-   res = platform_get_resource(pdev, IORESOURCE_MEM, 6);
-   if (!res)
+   res2 = platform_get_resource(pdev, IORESOURCE_MEM, 6);
+   if (!res2)
goto error_unmap;
-   ipipe->isp5_base_addr = ioremap_nocache(res->start,
-   resource_size(res));
+   ipipe->isp5_base_addr = ioremap_nocache(res2->start,
+   resource_size(res2));
if (!ipipe->isp5_base_addr)
goto error_unmap;
 
-- 
2.20.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH AUTOSEL 4.19 518/671] staging: greybus: light: fix a couple double frees

2020-01-16 Thread Sasha Levin
From: Dan Carpenter 

[ Upstream commit 329101244f214952606359d254ae883b7109e1a5 ]

The problem is in gb_lights_request_handler().  If we get a request to
change the config then we release the light with gb_lights_light_release()
and re-allocated it.  However, if the allocation fails part way through
then we call gb_lights_light_release() again.  This can lead to a couple
different double frees where we haven't cleared out the original values:

gb_lights_light_v4l2_unregister(light);
...
kfree(light->channels);
kfree(light->name);

I also made a small change to how we set "light->channels_count = 0;".
The original code handled this part fine and did not cause a use after
free but it was sort of complicated to read.

Fixes: 2870b52bae4c ("greybus: lights: add lights implementation")
Signed-off-by: Dan Carpenter 
Acked-by: Rui Miguel Silva 
Link: https://lore.kernel.org/r/20190829122839.GA20116@mwanda
Signed-off-by: Greg Kroah-Hartman 
Signed-off-by: Sasha Levin 
---
 drivers/staging/greybus/light.c | 12 ++--
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/staging/greybus/light.c b/drivers/staging/greybus/light.c
index 010ae1e9c7fb..40680eaf3974 100644
--- a/drivers/staging/greybus/light.c
+++ b/drivers/staging/greybus/light.c
@@ -1098,21 +1098,21 @@ static void gb_lights_channel_release(struct gb_channel 
*channel)
 static void gb_lights_light_release(struct gb_light *light)
 {
int i;
-   int count;
 
light->ready = false;
 
-   count = light->channels_count;
-
if (light->has_flash)
gb_lights_light_v4l2_unregister(light);
+   light->has_flash = false;
 
-   for (i = 0; i < count; i++) {
+   for (i = 0; i < light->channels_count; i++)
gb_lights_channel_release(&light->channels[i]);
-   light->channels_count--;
-   }
+   light->channels_count = 0;
+
kfree(light->channels);
+   light->channels = NULL;
kfree(light->name);
+   light->name = NULL;
 }
 
 static void gb_lights_release(struct gb_lights *glights)
-- 
2.20.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH AUTOSEL 4.14 022/371] staging: bcm2835-camera: Abort probe if there is no camera

2020-01-16 Thread Sasha Levin
From: Stefan Wahren 

[ Upstream commit 7566f39dfdc11f8a97d5810c6e6295a88f97ef91 ]

Abort the probing of the camera driver in case there isn't a camera
actually connected to the Raspberry Pi. This solution also avoids a
NULL ptr dereference of mmal instance on driver unload.

Fixes: 7b3ad5abf027 ("staging: Import the BCM2835 MMAL-based V4L2 camera 
driver.")
Signed-off-by: Stefan Wahren 
Reviewed-by: Nicolas Saenz Julienne 
Reviewed-by: Dan Carpenter 
Signed-off-by: Greg Kroah-Hartman 
Signed-off-by: Sasha Levin 
---
 .../vc04_services/bcm2835-camera/bcm2835-camera.c| 9 +
 1 file changed, 9 insertions(+)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c 
b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
index 377da037f31c..b521752d9aa0 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
@@ -1849,6 +1849,12 @@ static int __init bm2835_mmal_init(void)
num_cameras = get_num_cameras(instance,
  resolutions,
  MAX_BCM2835_CAMERAS);
+
+   if (num_cameras < 1) {
+   ret = -ENODEV;
+   goto cleanup_mmal;
+   }
+
if (num_cameras > MAX_BCM2835_CAMERAS)
num_cameras = MAX_BCM2835_CAMERAS;
 
@@ -1948,6 +1954,9 @@ static int __init bm2835_mmal_init(void)
pr_info("%s: error %d while loading driver\n",
BM2835_MMAL_MODULE_NAME, ret);
 
+cleanup_mmal:
+   vchiq_mmal_finalise(instance);
+
return ret;
 }
 
-- 
2.20.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH AUTOSEL 4.14 011/371] staging: comedi: ni_mio_common: protect register write overflow

2020-01-16 Thread Sasha Levin
From: "Spencer E. Olson" 

[ Upstream commit 1cbca5852d6c16e85a21487a15d211195aacd4a1 ]

Fixes two problems introduced as early as
commit 03aef4b6dc12  ("Staging: comedi: add ni_mio_common code"):
(1) Ensures that the last four bits of NISTC_RTSI_TRIGB_OUT_REG register is
not unduly overwritten on e-series devices.  On e-series devices, the
first three of the last four bits are reserved.  The last bit defines
the output selection of the RGOUT0 pin, otherwise known as
RTSI_Sub_Selection.  For m-series devices, these last four bits are
indeed used as the output selection of the RTSI7 pin (and the
RTSI_Sub_Selection bit for the RGOUT0 pin is moved to the
RTSI_Trig_Direction register.
(2) Allows all 4 RTSI_BRD lines to be treated as valid sources for RTSI
lines.

This patch also cleans up the ni_get_rtsi_routing command for readability.

Fixes: 03aef4b6dc12  ("Staging: comedi: add ni_mio_common code")
Signed-off-by: Spencer E. Olson 
Reviewed-by: Ian Abbott 
Signed-off-by: Greg Kroah-Hartman 
Signed-off-by: Sasha Levin 
---
 .../staging/comedi/drivers/ni_mio_common.c| 24 +--
 1 file changed, 17 insertions(+), 7 deletions(-)

diff --git a/drivers/staging/comedi/drivers/ni_mio_common.c 
b/drivers/staging/comedi/drivers/ni_mio_common.c
index 36361bdf934a..2f82dcb1fd06 100644
--- a/drivers/staging/comedi/drivers/ni_mio_common.c
+++ b/drivers/staging/comedi/drivers/ni_mio_common.c
@@ -4991,7 +4991,10 @@ static int ni_valid_rtsi_output_source(struct 
comedi_device *dev,
case NI_RTSI_OUTPUT_G_SRC0:
case NI_RTSI_OUTPUT_G_GATE0:
case NI_RTSI_OUTPUT_RGOUT0:
-   case NI_RTSI_OUTPUT_RTSI_BRD_0:
+   case NI_RTSI_OUTPUT_RTSI_BRD(0):
+   case NI_RTSI_OUTPUT_RTSI_BRD(1):
+   case NI_RTSI_OUTPUT_RTSI_BRD(2):
+   case NI_RTSI_OUTPUT_RTSI_BRD(3):
return 1;
case NI_RTSI_OUTPUT_RTSI_OSC:
return (devpriv->is_m_series) ? 1 : 0;
@@ -5012,11 +5015,18 @@ static int ni_set_rtsi_routing(struct comedi_device 
*dev,
devpriv->rtsi_trig_a_output_reg |= NISTC_RTSI_TRIG(chan, src);
ni_stc_writew(dev, devpriv->rtsi_trig_a_output_reg,
  NISTC_RTSI_TRIGA_OUT_REG);
-   } else if (chan < 8) {
+   } else if (chan < NISTC_RTSI_TRIG_NUM_CHAN(devpriv->is_m_series)) {
devpriv->rtsi_trig_b_output_reg &= ~NISTC_RTSI_TRIG_MASK(chan);
devpriv->rtsi_trig_b_output_reg |= NISTC_RTSI_TRIG(chan, src);
ni_stc_writew(dev, devpriv->rtsi_trig_b_output_reg,
  NISTC_RTSI_TRIGB_OUT_REG);
+   } else if (chan != NISTC_RTSI_TRIG_OLD_CLK_CHAN) {
+   /* probably should never reach this, since the
+* ni_valid_rtsi_output_source above errors out if chan is too
+* high
+*/
+   dev_err(dev->class_dev, "%s: unknown rtsi channel\n", __func__);
+   return -EINVAL;
}
return 2;
 }
@@ -5032,12 +5042,12 @@ static unsigned int ni_get_rtsi_routing(struct 
comedi_device *dev,
} else if (chan < NISTC_RTSI_TRIG_NUM_CHAN(devpriv->is_m_series)) {
return NISTC_RTSI_TRIG_TO_SRC(chan,
  devpriv->rtsi_trig_b_output_reg);
-   } else {
-   if (chan == NISTC_RTSI_TRIG_OLD_CLK_CHAN)
-   return NI_RTSI_OUTPUT_RTSI_OSC;
-   dev_err(dev->class_dev, "bug! should never get here?\n");
-   return 0;
+   } else if (chan == NISTC_RTSI_TRIG_OLD_CLK_CHAN) {
+   return NI_RTSI_OUTPUT_RTSI_OSC;
}
+
+   dev_err(dev->class_dev, "%s: unknown rtsi channel\n", __func__);
+   return -EINVAL;
 }
 
 static int ni_rtsi_insn_config(struct comedi_device *dev,
-- 
2.20.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH AUTOSEL 4.14 104/371] staging: r8822be: check kzalloc return or bail

2020-01-16 Thread Sasha Levin
From: Nicholas Mc Guire 

[ Upstream commit e4b08e16b7d9d030b6475ef48f94d734a39f3c81 ]

The kzalloc() in halmac_parse_psd_data_88xx() can fail and return NULL
so check the psd_set->data after allocation and if allocation failed
return HALMAC_CMD_PROCESS_ERROR.

Signed-off-by: Nicholas Mc Guire 
Fixes: 938a0447f094 ("staging: r8822be: Add code for halmac sub-drive")
Signed-off-by: Greg Kroah-Hartman 
Signed-off-by: Sasha Levin 
---
 .../staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c| 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c 
b/drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c
index 544f638ed3ef..15091ee587db 100644
--- a/drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c
+++ b/drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c
@@ -2492,8 +2492,11 @@ halmac_parse_psd_data_88xx(struct halmac_adapter 
*halmac_adapter, u8 *c2h_buf,
segment_size = (u8)PSD_DATA_GET_SEGMENT_SIZE(c2h_buf);
psd_set->data_size = total_size;
 
-   if (!psd_set->data)
+   if (!psd_set->data) {
psd_set->data = kzalloc(psd_set->data_size, GFP_KERNEL);
+   if (!psd_set->data)
+   return HALMAC_CMD_PROCESS_ERROR;
+   }
 
if (segment_id == 0)
psd_set->segment_size = segment_size;
-- 
2.20.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH AUTOSEL 4.14 081/371] staging: most: cdev: add missing check for cdev_add failure

2020-01-16 Thread Sasha Levin
From: Colin Ian King 

[ Upstream commit 5ae890780e1b4d08f2c0c5d4ea96fc3928fc0ee9 ]

Currently the call to cdev_add is missing a check for failure. Fix this by
checking for failure and exiting via a new error path that ensures the
allocated comp_channel struct is kfree'd.

Detected by CoverityScan, CID#1462359 ("Unchecked return value")

Fixes: 9bc79bbcd0c5 ("Staging: most: add MOST driver's aim-cdev module")
Signed-off-by: Colin Ian King 
Signed-off-by: Greg Kroah-Hartman 
Signed-off-by: Sasha Levin 
---
 drivers/staging/most/aim-cdev/cdev.c | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/most/aim-cdev/cdev.c 
b/drivers/staging/most/aim-cdev/cdev.c
index 1e5cbc893496..d000b6ff8a7d 100644
--- a/drivers/staging/most/aim-cdev/cdev.c
+++ b/drivers/staging/most/aim-cdev/cdev.c
@@ -455,7 +455,9 @@ static int aim_probe(struct most_interface *iface, int 
channel_id,
c->devno = MKDEV(major, current_minor);
cdev_init(&c->cdev, &channel_fops);
c->cdev.owner = THIS_MODULE;
-   cdev_add(&c->cdev, c->devno, 1);
+   retval = cdev_add(&c->cdev, c->devno, 1);
+   if (retval < 0)
+   goto err_free_c;
c->iface = iface;
c->cfg = cfg;
c->channel_id = channel_id;
@@ -491,6 +493,7 @@ static int aim_probe(struct most_interface *iface, int 
channel_id,
list_del(&c->list);
 error_alloc_kfifo:
cdev_del(&c->cdev);
+err_free_c:
kfree(c);
 error_alloc_channel:
ida_simple_remove(&minor_id, current_minor);
-- 
2.20.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH AUTOSEL 4.14 115/371] staging: rtlwifi: Use proper enum for return in halmac_parse_psd_data_88xx

2020-01-16 Thread Sasha Levin
From: Nathan Chancellor 

[ Upstream commit e8edc32d70a4e09160835792eb5d1af71a0eec14 ]

Clang warns:

drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c:2472:11:
warning: implicit conversion from enumeration type 'enum
halmac_cmd_process_status' to different enumeration type 'enum
halmac_ret_status' [-Wenum-conversion]
return HALMAC_CMD_PROCESS_ERROR;
~~ ^~~~
1 warning generated.

Fix this by using the proper enum for allocation failures,
HALMAC_RET_MALLOC_FAIL, which is used in the rest of this file.

Fixes: e4b08e16b7d9 ("staging: r8822be: check kzalloc return or bail")
Link: https://github.com/ClangBuiltLinux/linux/issues/375
Signed-off-by: Nathan Chancellor 
Reviewed-by: Nicholas Mc Guire 
Signed-off-by: Greg Kroah-Hartman 
Signed-off-by: Sasha Levin 
---
 drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c 
b/drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c
index 15091ee587db..65edd14a1147 100644
--- a/drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c
+++ b/drivers/staging/rtlwifi/halmac/halmac_88xx/halmac_func_88xx.c
@@ -2495,7 +2495,7 @@ halmac_parse_psd_data_88xx(struct halmac_adapter 
*halmac_adapter, u8 *c2h_buf,
if (!psd_set->data) {
psd_set->data = kzalloc(psd_set->data_size, GFP_KERNEL);
if (!psd_set->data)
-   return HALMAC_CMD_PROCESS_ERROR;
+   return HALMAC_RET_MALLOC_FAIL;
}
 
if (segment_id == 0)
-- 
2.20.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH AUTOSEL 4.14 283/371] staging: greybus: light: fix a couple double frees

2020-01-16 Thread Sasha Levin
From: Dan Carpenter 

[ Upstream commit 329101244f214952606359d254ae883b7109e1a5 ]

The problem is in gb_lights_request_handler().  If we get a request to
change the config then we release the light with gb_lights_light_release()
and re-allocated it.  However, if the allocation fails part way through
then we call gb_lights_light_release() again.  This can lead to a couple
different double frees where we haven't cleared out the original values:

gb_lights_light_v4l2_unregister(light);
...
kfree(light->channels);
kfree(light->name);

I also made a small change to how we set "light->channels_count = 0;".
The original code handled this part fine and did not cause a use after
free but it was sort of complicated to read.

Fixes: 2870b52bae4c ("greybus: lights: add lights implementation")
Signed-off-by: Dan Carpenter 
Acked-by: Rui Miguel Silva 
Link: https://lore.kernel.org/r/20190829122839.GA20116@mwanda
Signed-off-by: Greg Kroah-Hartman 
Signed-off-by: Sasha Levin 
---
 drivers/staging/greybus/light.c | 12 ++--
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/staging/greybus/light.c b/drivers/staging/greybus/light.c
index 0f538b8c3a07..4e7575147775 100644
--- a/drivers/staging/greybus/light.c
+++ b/drivers/staging/greybus/light.c
@@ -1103,21 +1103,21 @@ static void gb_lights_channel_release(struct gb_channel 
*channel)
 static void gb_lights_light_release(struct gb_light *light)
 {
int i;
-   int count;
 
light->ready = false;
 
-   count = light->channels_count;
-
if (light->has_flash)
gb_lights_light_v4l2_unregister(light);
+   light->has_flash = false;
 
-   for (i = 0; i < count; i++) {
+   for (i = 0; i < light->channels_count; i++)
gb_lights_channel_release(&light->channels[i]);
-   light->channels_count--;
-   }
+   light->channels_count = 0;
+
kfree(light->channels);
+   light->channels = NULL;
kfree(light->name);
+   light->name = NULL;
 }
 
 static void gb_lights_release(struct gb_lights *glights)
-- 
2.20.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH AUTOSEL 4.9 007/251] staging: comedi: ni_mio_common: protect register write overflow

2020-01-16 Thread Sasha Levin
From: "Spencer E. Olson" 

[ Upstream commit 1cbca5852d6c16e85a21487a15d211195aacd4a1 ]

Fixes two problems introduced as early as
commit 03aef4b6dc12  ("Staging: comedi: add ni_mio_common code"):
(1) Ensures that the last four bits of NISTC_RTSI_TRIGB_OUT_REG register is
not unduly overwritten on e-series devices.  On e-series devices, the
first three of the last four bits are reserved.  The last bit defines
the output selection of the RGOUT0 pin, otherwise known as
RTSI_Sub_Selection.  For m-series devices, these last four bits are
indeed used as the output selection of the RTSI7 pin (and the
RTSI_Sub_Selection bit for the RGOUT0 pin is moved to the
RTSI_Trig_Direction register.
(2) Allows all 4 RTSI_BRD lines to be treated as valid sources for RTSI
lines.

This patch also cleans up the ni_get_rtsi_routing command for readability.

Fixes: 03aef4b6dc12  ("Staging: comedi: add ni_mio_common code")
Signed-off-by: Spencer E. Olson 
Reviewed-by: Ian Abbott 
Signed-off-by: Greg Kroah-Hartman 
Signed-off-by: Sasha Levin 
---
 .../staging/comedi/drivers/ni_mio_common.c| 24 +--
 1 file changed, 17 insertions(+), 7 deletions(-)

diff --git a/drivers/staging/comedi/drivers/ni_mio_common.c 
b/drivers/staging/comedi/drivers/ni_mio_common.c
index fe03a41dc5cf..12056eb3cbe8 100644
--- a/drivers/staging/comedi/drivers/ni_mio_common.c
+++ b/drivers/staging/comedi/drivers/ni_mio_common.c
@@ -4945,7 +4945,10 @@ static int ni_valid_rtsi_output_source(struct 
comedi_device *dev,
case NI_RTSI_OUTPUT_G_SRC0:
case NI_RTSI_OUTPUT_G_GATE0:
case NI_RTSI_OUTPUT_RGOUT0:
-   case NI_RTSI_OUTPUT_RTSI_BRD_0:
+   case NI_RTSI_OUTPUT_RTSI_BRD(0):
+   case NI_RTSI_OUTPUT_RTSI_BRD(1):
+   case NI_RTSI_OUTPUT_RTSI_BRD(2):
+   case NI_RTSI_OUTPUT_RTSI_BRD(3):
return 1;
case NI_RTSI_OUTPUT_RTSI_OSC:
return (devpriv->is_m_series) ? 1 : 0;
@@ -4966,11 +4969,18 @@ static int ni_set_rtsi_routing(struct comedi_device 
*dev,
devpriv->rtsi_trig_a_output_reg |= NISTC_RTSI_TRIG(chan, src);
ni_stc_writew(dev, devpriv->rtsi_trig_a_output_reg,
  NISTC_RTSI_TRIGA_OUT_REG);
-   } else if (chan < 8) {
+   } else if (chan < NISTC_RTSI_TRIG_NUM_CHAN(devpriv->is_m_series)) {
devpriv->rtsi_trig_b_output_reg &= ~NISTC_RTSI_TRIG_MASK(chan);
devpriv->rtsi_trig_b_output_reg |= NISTC_RTSI_TRIG(chan, src);
ni_stc_writew(dev, devpriv->rtsi_trig_b_output_reg,
  NISTC_RTSI_TRIGB_OUT_REG);
+   } else if (chan != NISTC_RTSI_TRIG_OLD_CLK_CHAN) {
+   /* probably should never reach this, since the
+* ni_valid_rtsi_output_source above errors out if chan is too
+* high
+*/
+   dev_err(dev->class_dev, "%s: unknown rtsi channel\n", __func__);
+   return -EINVAL;
}
return 2;
 }
@@ -4986,12 +4996,12 @@ static unsigned int ni_get_rtsi_routing(struct 
comedi_device *dev,
} else if (chan < NISTC_RTSI_TRIG_NUM_CHAN(devpriv->is_m_series)) {
return NISTC_RTSI_TRIG_TO_SRC(chan,
  devpriv->rtsi_trig_b_output_reg);
-   } else {
-   if (chan == NISTC_RTSI_TRIG_OLD_CLK_CHAN)
-   return NI_RTSI_OUTPUT_RTSI_OSC;
-   dev_err(dev->class_dev, "bug! should never get here?\n");
-   return 0;
+   } else if (chan == NISTC_RTSI_TRIG_OLD_CLK_CHAN) {
+   return NI_RTSI_OUTPUT_RTSI_OSC;
}
+
+   dev_err(dev->class_dev, "%s: unknown rtsi channel\n", __func__);
+   return -EINVAL;
 }
 
 static int ni_rtsi_insn_config(struct comedi_device *dev,
-- 
2.20.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH AUTOSEL 4.9 056/251] staging: most: cdev: add missing check for cdev_add failure

2020-01-16 Thread Sasha Levin
From: Colin Ian King 

[ Upstream commit 5ae890780e1b4d08f2c0c5d4ea96fc3928fc0ee9 ]

Currently the call to cdev_add is missing a check for failure. Fix this by
checking for failure and exiting via a new error path that ensures the
allocated comp_channel struct is kfree'd.

Detected by CoverityScan, CID#1462359 ("Unchecked return value")

Fixes: 9bc79bbcd0c5 ("Staging: most: add MOST driver's aim-cdev module")
Signed-off-by: Colin Ian King 
Signed-off-by: Greg Kroah-Hartman 
Signed-off-by: Sasha Levin 
---
 drivers/staging/most/aim-cdev/cdev.c | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/most/aim-cdev/cdev.c 
b/drivers/staging/most/aim-cdev/cdev.c
index 7f51024dc5eb..e87b9ed4f37d 100644
--- a/drivers/staging/most/aim-cdev/cdev.c
+++ b/drivers/staging/most/aim-cdev/cdev.c
@@ -451,7 +451,9 @@ static int aim_probe(struct most_interface *iface, int 
channel_id,
c->devno = MKDEV(major, current_minor);
cdev_init(&c->cdev, &channel_fops);
c->cdev.owner = THIS_MODULE;
-   cdev_add(&c->cdev, c->devno, 1);
+   retval = cdev_add(&c->cdev, c->devno, 1);
+   if (retval < 0)
+   goto err_free_c;
c->iface = iface;
c->cfg = cfg;
c->channel_id = channel_id;
@@ -487,6 +489,7 @@ static int aim_probe(struct most_interface *iface, int 
channel_id,
list_del(&c->list);
 error_alloc_kfifo:
cdev_del(&c->cdev);
+err_free_c:
kfree(c);
 error_alloc_channel:
ida_simple_remove(&minor_id, current_minor);
-- 
2.20.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH AUTOSEL 4.9 193/251] staging: greybus: light: fix a couple double frees

2020-01-16 Thread Sasha Levin
From: Dan Carpenter 

[ Upstream commit 329101244f214952606359d254ae883b7109e1a5 ]

The problem is in gb_lights_request_handler().  If we get a request to
change the config then we release the light with gb_lights_light_release()
and re-allocated it.  However, if the allocation fails part way through
then we call gb_lights_light_release() again.  This can lead to a couple
different double frees where we haven't cleared out the original values:

gb_lights_light_v4l2_unregister(light);
...
kfree(light->channels);
kfree(light->name);

I also made a small change to how we set "light->channels_count = 0;".
The original code handled this part fine and did not cause a use after
free but it was sort of complicated to read.

Fixes: 2870b52bae4c ("greybus: lights: add lights implementation")
Signed-off-by: Dan Carpenter 
Acked-by: Rui Miguel Silva 
Link: https://lore.kernel.org/r/20190829122839.GA20116@mwanda
Signed-off-by: Greg Kroah-Hartman 
Signed-off-by: Sasha Levin 
---
 drivers/staging/greybus/light.c | 12 ++--
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/staging/greybus/light.c b/drivers/staging/greybus/light.c
index 9f01427f35f9..1cb82cc28aa7 100644
--- a/drivers/staging/greybus/light.c
+++ b/drivers/staging/greybus/light.c
@@ -1102,21 +1102,21 @@ static void gb_lights_channel_release(struct gb_channel 
*channel)
 static void gb_lights_light_release(struct gb_light *light)
 {
int i;
-   int count;
 
light->ready = false;
 
-   count = light->channels_count;
-
if (light->has_flash)
gb_lights_light_v4l2_unregister(light);
+   light->has_flash = false;
 
-   for (i = 0; i < count; i++) {
+   for (i = 0; i < light->channels_count; i++)
gb_lights_channel_release(&light->channels[i]);
-   light->channels_count--;
-   }
+   light->channels_count = 0;
+
kfree(light->channels);
+   light->channels = NULL;
kfree(light->name);
+   light->name = NULL;
 }
 
 static void gb_lights_release(struct gb_lights *glights)
-- 
2.20.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH AUTOSEL 4.4 005/174] staging: comedi: ni_mio_common: protect register write overflow

2020-01-16 Thread Sasha Levin
From: "Spencer E. Olson" 

[ Upstream commit 1cbca5852d6c16e85a21487a15d211195aacd4a1 ]

Fixes two problems introduced as early as
commit 03aef4b6dc12  ("Staging: comedi: add ni_mio_common code"):
(1) Ensures that the last four bits of NISTC_RTSI_TRIGB_OUT_REG register is
not unduly overwritten on e-series devices.  On e-series devices, the
first three of the last four bits are reserved.  The last bit defines
the output selection of the RGOUT0 pin, otherwise known as
RTSI_Sub_Selection.  For m-series devices, these last four bits are
indeed used as the output selection of the RTSI7 pin (and the
RTSI_Sub_Selection bit for the RGOUT0 pin is moved to the
RTSI_Trig_Direction register.
(2) Allows all 4 RTSI_BRD lines to be treated as valid sources for RTSI
lines.

This patch also cleans up the ni_get_rtsi_routing command for readability.

Fixes: 03aef4b6dc12  ("Staging: comedi: add ni_mio_common code")
Signed-off-by: Spencer E. Olson 
Reviewed-by: Ian Abbott 
Signed-off-by: Greg Kroah-Hartman 
Signed-off-by: Sasha Levin 
---
 .../staging/comedi/drivers/ni_mio_common.c| 24 +--
 1 file changed, 17 insertions(+), 7 deletions(-)

diff --git a/drivers/staging/comedi/drivers/ni_mio_common.c 
b/drivers/staging/comedi/drivers/ni_mio_common.c
index 619c989c5f37..d682907c146a 100644
--- a/drivers/staging/comedi/drivers/ni_mio_common.c
+++ b/drivers/staging/comedi/drivers/ni_mio_common.c
@@ -4809,7 +4809,10 @@ static int ni_valid_rtsi_output_source(struct 
comedi_device *dev,
case NI_RTSI_OUTPUT_G_SRC0:
case NI_RTSI_OUTPUT_G_GATE0:
case NI_RTSI_OUTPUT_RGOUT0:
-   case NI_RTSI_OUTPUT_RTSI_BRD_0:
+   case NI_RTSI_OUTPUT_RTSI_BRD(0):
+   case NI_RTSI_OUTPUT_RTSI_BRD(1):
+   case NI_RTSI_OUTPUT_RTSI_BRD(2):
+   case NI_RTSI_OUTPUT_RTSI_BRD(3):
return 1;
case NI_RTSI_OUTPUT_RTSI_OSC:
return (devpriv->is_m_series) ? 1 : 0;
@@ -4830,11 +4833,18 @@ static int ni_set_rtsi_routing(struct comedi_device 
*dev,
devpriv->rtsi_trig_a_output_reg |= NISTC_RTSI_TRIG(chan, src);
ni_stc_writew(dev, devpriv->rtsi_trig_a_output_reg,
  NISTC_RTSI_TRIGA_OUT_REG);
-   } else if (chan < 8) {
+   } else if (chan < NISTC_RTSI_TRIG_NUM_CHAN(devpriv->is_m_series)) {
devpriv->rtsi_trig_b_output_reg &= ~NISTC_RTSI_TRIG_MASK(chan);
devpriv->rtsi_trig_b_output_reg |= NISTC_RTSI_TRIG(chan, src);
ni_stc_writew(dev, devpriv->rtsi_trig_b_output_reg,
  NISTC_RTSI_TRIGB_OUT_REG);
+   } else if (chan != NISTC_RTSI_TRIG_OLD_CLK_CHAN) {
+   /* probably should never reach this, since the
+* ni_valid_rtsi_output_source above errors out if chan is too
+* high
+*/
+   dev_err(dev->class_dev, "%s: unknown rtsi channel\n", __func__);
+   return -EINVAL;
}
return 2;
 }
@@ -4849,12 +4859,12 @@ static unsigned ni_get_rtsi_routing(struct 
comedi_device *dev, unsigned chan)
} else if (chan < NISTC_RTSI_TRIG_NUM_CHAN(devpriv->is_m_series)) {
return NISTC_RTSI_TRIG_TO_SRC(chan,
  devpriv->rtsi_trig_b_output_reg);
-   } else {
-   if (chan == NISTC_RTSI_TRIG_OLD_CLK_CHAN)
-   return NI_RTSI_OUTPUT_RTSI_OSC;
-   dev_err(dev->class_dev, "bug! should never get here?\n");
-   return 0;
+   } else if (chan == NISTC_RTSI_TRIG_OLD_CLK_CHAN) {
+   return NI_RTSI_OUTPUT_RTSI_OSC;
}
+
+   dev_err(dev->class_dev, "%s: unknown rtsi channel\n", __func__);
+   return -EINVAL;
 }
 
 static int ni_rtsi_insn_config(struct comedi_device *dev,
-- 
2.20.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[staging:staging-testing] BUILD SUCCESS 793769120b109e3cec536bb8f5b6f9ef959c315f

2020-01-16 Thread kbuild test robot
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git 
 staging-testing
branch HEAD: 793769120b109e3cec536bb8f5b6f9ef959c315f  staging: most: core: 
remove noisy log messages

elapsed time: 681m

configs tested: 148
configs skipped: 0

The following configs have been built successfully.
More configs may be tested in the coming days.

pariscallnoconfig
pariscallyesonfig
parisc b180_defconfig
pariscc3000_defconfig
parisc  defconfig
um  defconfig
um i386_defconfig
um   x86_64_defconfig
alpha   defconfig
cskydefconfig
nds32 allnoconfig
nds32   defconfig
mips   32r2_defconfig
mips 64r6el_defconfig
mips allmodconfig
mips  allnoconfig
mips allyesconfig
mips  fuloong2e_defconfig
mips  malta_kvm_defconfig
x86_64   randconfig-b001-20200116
x86_64   randconfig-b002-20200116
x86_64   randconfig-b003-20200116
i386 randconfig-b001-20200116
i386 randconfig-b002-20200116
i386 randconfig-b003-20200116
h8300 edosk2674_defconfig
h8300h8300h-sim_defconfig
h8300   h8s-sim_defconfig
m68k allmodconfig
m68k   m5475evb_defconfig
m68k  multi_defconfig
m68k   sun3_defconfig
sh   allmodconfig
shallnoconfig
sh  rsk7269_defconfig
sh  sh7785lcr_32bit_defconfig
shtitan_defconfig
c6x  allyesconfig
c6xevmc6678_defconfig
nios2 10m50_defconfig
nios2 3c120_defconfig
openriscor1ksim_defconfig
openrisc simple_smp_defconfig
xtensa   common_defconfig
xtensa  iss_defconfig
arc  allyesconfig
arc defconfig
microblaze  mmu_defconfig
microblazenommu_defconfig
powerpc   allnoconfig
powerpc defconfig
powerpc   ppc64_defconfig
powerpc  rhel-kconfig
alpharandconfig-a001-20200116
m68k randconfig-a001-20200116
mips randconfig-a001-20200116
nds32randconfig-a001-20200116
parisc   randconfig-a001-20200116
riscvrandconfig-a001-20200116
s390 alldefconfig
s390 allmodconfig
s390  allnoconfig
s390 allyesconfig
s390  debug_defconfig
s390defconfig
s390   zfcpdump_defconfig
sparcallyesconfig
sparc   defconfig
sparc64  allmodconfig
sparc64   allnoconfig
sparc64  allyesconfig
sparc64 defconfig
riscvallmodconfig
riscv allnoconfig
riscvallyesconfig
riscv   defconfig
riscvnommu_virt_defconfig
riscv  rv32_defconfig
i386 alldefconfig
i386  allnoconfig
i386 allyesconfig
i386defconfig
x86_64   randconfig-d001-20200116
x86_64   randconfig-d002-20200116
x86_64   randconfig-d003-20200116
i386 randconfig-d001-20200116
i386 randconfig-d002-20200116
i386 randconfig-d003-20200116
x86_64  fedora-25
x86_64  kexec
x86_64lkp
x86_64   rhel
x86_64   rhel-7.6
ia64 alldefconfig
ia64 allmodconfig
ia64  allnoconfig
ia64 allyesconfig
ia64defconfig
x86_64   randconfig-a001-20200116
x86_64   randconfig-a002-20200116
x86_64   randconfig-a003

[staging:staging-linus] BUILD SUCCESS 9fea3a40f6b07de977a2783270c8c3bc82544d45

2020-01-16 Thread kbuild test robot
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git 
 staging-linus
branch HEAD: 9fea3a40f6b07de977a2783270c8c3bc82544d45  staging: comedi: 
ni_routes: allow partial routing information

elapsed time: 682m

configs tested: 148
configs skipped: 0

The following configs have been built successfully.
More configs may be tested in the coming days.

pariscallnoconfig
pariscallyesonfig
parisc b180_defconfig
pariscc3000_defconfig
parisc  defconfig
um  defconfig
um i386_defconfig
um   x86_64_defconfig
alpha   defconfig
cskydefconfig
nds32 allnoconfig
nds32   defconfig
mips   32r2_defconfig
mips 64r6el_defconfig
mips allmodconfig
mips  allnoconfig
mips allyesconfig
mips  fuloong2e_defconfig
mips  malta_kvm_defconfig
x86_64   randconfig-b001-20200116
x86_64   randconfig-b002-20200116
x86_64   randconfig-b003-20200116
i386 randconfig-b001-20200116
i386 randconfig-b002-20200116
i386 randconfig-b003-20200116
h8300 edosk2674_defconfig
h8300h8300h-sim_defconfig
h8300   h8s-sim_defconfig
m68k allmodconfig
m68k   m5475evb_defconfig
m68k  multi_defconfig
m68k   sun3_defconfig
sh   allmodconfig
shallnoconfig
sh  rsk7269_defconfig
sh  sh7785lcr_32bit_defconfig
shtitan_defconfig
c6x  allyesconfig
c6xevmc6678_defconfig
nios2 10m50_defconfig
nios2 3c120_defconfig
openriscor1ksim_defconfig
openrisc simple_smp_defconfig
xtensa   common_defconfig
xtensa  iss_defconfig
arc  allyesconfig
arc defconfig
microblaze  mmu_defconfig
microblazenommu_defconfig
powerpc   allnoconfig
powerpc defconfig
powerpc   ppc64_defconfig
powerpc  rhel-kconfig
alpharandconfig-a001-20200116
m68k randconfig-a001-20200116
mips randconfig-a001-20200116
nds32randconfig-a001-20200116
parisc   randconfig-a001-20200116
riscvrandconfig-a001-20200116
s390 alldefconfig
s390 allmodconfig
s390  allnoconfig
s390 allyesconfig
s390  debug_defconfig
s390defconfig
s390   zfcpdump_defconfig
sparcallyesconfig
sparc   defconfig
sparc64  allmodconfig
sparc64   allnoconfig
sparc64  allyesconfig
sparc64 defconfig
riscvallmodconfig
riscv allnoconfig
riscvallyesconfig
riscv   defconfig
riscvnommu_virt_defconfig
riscv  rv32_defconfig
i386 alldefconfig
i386  allnoconfig
i386 allyesconfig
i386defconfig
x86_64   randconfig-d001-20200116
x86_64   randconfig-d002-20200116
x86_64   randconfig-d003-20200116
i386 randconfig-d001-20200116
i386 randconfig-d002-20200116
i386 randconfig-d003-20200116
x86_64  fedora-25
x86_64  kexec
x86_64lkp
x86_64   rhel
x86_64   rhel-7.6
ia64 alldefconfig
ia64 allmodconfig
ia64  allnoconfig
ia64 allyesconfig
ia64defconfig
x86_64   randconfig-a001-20200116
x86_64   randconfig-a002-20200116
x86_64

Re: [PATCH v2 2/4] media: cedrus: hevc: Add support for scaling matrix

2020-01-16 Thread Jernej Škrabec
Dne sreda, 08. januar 2020 ob 15:46:50 CET je Hans Verkuil napisal(a):
> On 1/7/20 6:10 PM, Jernej Škrabec wrote:
> > Hi!
> > 
> > Dne torek, 07. januar 2020 ob 16:01:16 CET je Hans Verkuil napisal(a):
> >> On 12/13/19 5:04 PM, Jernej Skrabec wrote:
> >>> HEVC frames may use scaling list feature. Add support for it.
> >>> 
> >>> Signed-off-by: Jernej Skrabec 
> >>> ---
> >>> 
> >>>  drivers/staging/media/sunxi/cedrus/cedrus.c   |  7 ++
> >>>  drivers/staging/media/sunxi/cedrus/cedrus.h   |  1 +
> >>>  .../staging/media/sunxi/cedrus/cedrus_dec.c   |  2 +
> >>>  .../staging/media/sunxi/cedrus/cedrus_h265.c  | 70 ++-
> >>>  .../staging/media/sunxi/cedrus/cedrus_regs.h  |  2 +
> >>>  5 files changed, 81 insertions(+), 1 deletion(-)
> >>> 
> >>> diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.c
> >>> b/drivers/staging/media/sunxi/cedrus/cedrus.c index
> >>> c6ddd46eff82..bf68bc6b20c8 100644
> >>> --- a/drivers/staging/media/sunxi/cedrus/cedrus.c
> >>> +++ b/drivers/staging/media/sunxi/cedrus/cedrus.c
> >>> @@ -116,6 +116,13 @@ static const struct cedrus_control
> >>> cedrus_controls[]
> >>> = {>
> >>> 
> >>>   .codec  = CEDRUS_CODEC_H265,
> >>>   .required   = true,
> >>>   
> >>>   },
> >>> 
> >>> + {
> >>> + .cfg = {
> >>> + .id =
> > 
> > V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX,
> > 
> >>> + },
> >>> + .codec  = CEDRUS_CODEC_H265,
> >>> + .required   = true,
> >> 
> >> Should this be true? This means that existing applications are now
> >> suddenly required to always pass the scaling matrix for every buffer.
> >> 
> >> Especially since the commit log says: 'HEVC frames *may* use scaling list
> >> feature', indicating that this is an optional feature.
> > 
> > True. Can you fix this when applying if this is the only issue?
> 
> I realized that after changing this to false, you also need to document
> what happens if you do NOT set this control in the request.
> 
> Does it fall back to default values? It looks like the HEVC spec defines
> some defaults (if I understand it correctly).

This control is needed only when V4L2_HEVC_SPS_FLAG_SCALING_LIST_ENABLED is 
set. If flag is set but control is not provided, then it doesn't really matter 
if default values or old values of control are used, image will be incorrectly 
decoded anyway. I think it's more important that buffer is marked with 
VB2_BUF_STATE_ERROR in such case.

Best regards,
Jernej

> 
> Regards,
> 
>   Hans
> 
> > Best regards,
> > Jernej
> > 
> >> Regards,
> >> 
> >>Hans
> >>
> >>> + },
> >>> 
> >>>   {
> >>>   
> >>>   .cfg = {
> >>>   
> >>>   .id =
> > 
> > V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE,
> > 
> >>> diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.h
> >>> b/drivers/staging/media/sunxi/cedrus/cedrus.h index
> >>> 9676ab8a..d945f4f0ff2d 100644
> >>> --- a/drivers/staging/media/sunxi/cedrus/cedrus.h
> >>> +++ b/drivers/staging/media/sunxi/cedrus/cedrus.h
> >>> @@ -73,6 +73,7 @@ struct cedrus_h265_run {
> >>> 
> >>>   const struct v4l2_ctrl_hevc_sps *sps;
> >>>   const struct v4l2_ctrl_hevc_pps *pps;
> >>>   const struct v4l2_ctrl_hevc_slice_params*slice_params;
> >>> 
> >>> + const struct v4l2_ctrl_hevc_scaling_matrix
> > 
> > *scaling_matrix;
> > 
> >>>  };
> >>>  
> >>>  struct cedrus_run {
> >>> 
> >>> diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_dec.c
> >>> b/drivers/staging/media/sunxi/cedrus/cedrus_dec.c index
> >>> 4a2fc33a1d79..327ed6c264dc 100644
> >>> --- a/drivers/staging/media/sunxi/cedrus/cedrus_dec.c
> >>> +++ b/drivers/staging/media/sunxi/cedrus/cedrus_dec.c
> >>> @@ -66,6 +66,8 @@ void cedrus_device_run(void *priv)
> >>> 
> >>>   V4L2_CID_MPEG_VIDEO_HEVC_PPS);
> >>>   
> >>>   run.h265.slice_params = cedrus_find_control_data(ctx,
> >>>   
> >>>   V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS);
> >>> 
> >>> + run.h265.scaling_matrix = cedrus_find_control_data(ctx,
> >>> + V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX);
> >>> 
> >>>   break;
> >>>   
> >>>   default:
> >>> diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_h265.c
> >>> b/drivers/staging/media/sunxi/cedrus/cedrus_h265.c index
> >>> 6945dc74e1d7..888bfd5ca224 100644
> >>> --- a/drivers/staging/media/sunxi/cedrus/cedrus_h265.c
> >>> +++ b/drivers/staging/media/sunxi/cedrus/cedrus_h265.c
> >>> @@ -220,6 +220,69 @@ static void cedrus_h265_pred_weight_write(struct
> >>> cedrus_dev *dev,>
> >>> 
> >>>   }
> >>>  
> >>>  }
> >>> 
> >>> +static void cedrus_h265_write_scaling_list(struct cedrus_ctx *ctx,
> >>> +struct cedrus_run
> > 
> > *run)
> > 
> >>> +{
> >>> + const struct v4l2_ctrl_hevc_scaling_matrix *scaling;
> >>> + struct cedrus_dev *dev = ctx->dev;
> >>> + u32 i, j, k, val;
> >>> +
> >>> + scaling = run->h265.scaling_matrix;
> >>

[PATCH v2] Staging: kpc2000: Remove warning: "dubious: x | !y" detected by sparse

2020-01-16 Thread Felipe Cardoso Resende
Sparse complains about "dubious: x | !y".

This patch adds some macros to make it clear if a flag will be enabled or
not so Sparse stops complaining about dubious code construct.

Signed-off-by: Felipe Cardoso Resende 
---

Changes in v2:
- Add "Staging: kpc2000" to Subject
- Fix commit message to explain what was done in the patch
- Move 'personal comment' to after '---' so it does not goes to git history.

The way I chose to remove the warning was to define a macro to
make it clear if a flag will be enable or not.

Let me know if you would prefer it to be done in a different way.

 drivers/staging/kpc2000/kpc2000_i2c.c | 80 +++
 1 file changed, 44 insertions(+), 36 deletions(-)

diff --git a/drivers/staging/kpc2000/kpc2000_i2c.c 
b/drivers/staging/kpc2000/kpc2000_i2c.c
index 5460bf973c9c..10b9cee9bffd 100644
--- a/drivers/staging/kpc2000/kpc2000_i2c.c
+++ b/drivers/staging/kpc2000/kpc2000_i2c.c
@@ -572,6 +572,10 @@ static s32 i801_access(struct i2c_adapter *adap, u16 addr,
return 0;
 }
 
+#define enable_flag(x) (x)
+#define disable_flag(x) 0
+#define enable_flag_if(x, cond) ((cond) ? (x) : 0)
+
 static u32 i801_func(struct i2c_adapter *adapter)
 {
struct i2c_device *priv = i2c_get_adapdata(adapter);
@@ -588,42 +592,42 @@ static u32 i801_func(struct i2c_adapter *adapter)
// http://lxr.free-electrons.com/source/include/uapi/linux/i2c.h#L85
 
u32 f =
-   I2C_FUNC_I2C | /* 0x0001(I enabled this
-   * one)
-   */
-   !I2C_FUNC_10BIT_ADDR |  /* 0x0002 */
-   !I2C_FUNC_PROTOCOL_MANGLING  |  /* 0x0004 */
-   ((priv->features & FEATURE_SMBUS_PEC) ?
-   I2C_FUNC_SMBUS_PEC : 0)  |  /* 0x0008 */
-   !I2C_FUNC_SMBUS_BLOCK_PROC_CALL  |  /* 0x8000 */
-   I2C_FUNC_SMBUS_QUICK |  /* 0x0001 */
-   !I2C_FUNC_SMBUS_READ_BYTE|  /* 0x0002 */
-   !I2C_FUNC_SMBUS_WRITE_BYTE   |  /* 0x0004 */
-   !I2C_FUNC_SMBUS_READ_BYTE_DATA   |  /* 0x0008 */
-   !I2C_FUNC_SMBUS_WRITE_BYTE_DATA  |  /* 0x0010 */
-   !I2C_FUNC_SMBUS_READ_WORD_DATA   |  /* 0x0020 */
-   !I2C_FUNC_SMBUS_WRITE_WORD_DATA  |  /* 0x0040 */
-   !I2C_FUNC_SMBUS_PROC_CALL|  /* 0x0080 */
-   !I2C_FUNC_SMBUS_READ_BLOCK_DATA  |  /* 0x0100 */
-   !I2C_FUNC_SMBUS_WRITE_BLOCK_DATA |  /* 0x0200 */
-   ((priv->features & FEATURE_I2C_BLOCK_READ) ?
-   I2C_FUNC_SMBUS_READ_I2C_BLOCK : 0) |/* 0x0400 */
-   I2C_FUNC_SMBUS_WRITE_I2C_BLOCK   |  /* 0x0800 */
-
-   I2C_FUNC_SMBUS_BYTE  | /* _READ_BYTE  _WRITE_BYTE */
-   I2C_FUNC_SMBUS_BYTE_DATA | /* _READ_BYTE_DATA
-   * _WRITE_BYTE_DATA
-   */
-   I2C_FUNC_SMBUS_WORD_DATA | /* _READ_WORD_DATA
-   * _WRITE_WORD_DATA
-   */
-   I2C_FUNC_SMBUS_BLOCK_DATA| /* _READ_BLOCK_DATA
-   * _WRITE_BLOCK_DATA
-   */
-   !I2C_FUNC_SMBUS_I2C_BLOCK| /* _READ_I2C_BLOCK
-   * _WRITE_I2C_BLOCK
-   */
-   !I2C_FUNC_SMBUS_EMUL;  /* _QUICK  _BYTE
+   enable_flag(I2C_FUNC_I2C) | /* 0x0001(I enabled this one) */
+   disable_flag(I2C_FUNC_10BIT_ADDR) | /* 0x0002 */
+   disable_flag(I2C_FUNC_PROTOCOL_MANGLING)  | /* 0x0004 */
+   enable_flag_if(I2C_FUNC_SMBUS_PEC,
+  priv->features & FEATURE_SMBUS_PEC) |
+   /* 0x0008 */
+   disable_flag(I2C_FUNC_SMBUS_BLOCK_PROC_CALL)  | /* 0x8000 */
+   enable_flag(I2C_FUNC_SMBUS_QUICK) | /* 0x0001 */
+   disable_flag(I2C_FUNC_SMBUS_READ_BYTE)| /* 0x0002 */
+   disable_flag(I2C_FUNC_SMBUS_WRITE_BYTE)   | /* 0x0004 */
+   disable_flag(I2C_FUNC_SMBUS_READ_BYTE_DATA)   | /* 0x0008 */
+   disable_flag(I2C_FUNC_SMBUS_WRITE_BYTE_DATA)  | /* 0x0010 */
+   disable_flag(I2C_FUNC_SMBUS_READ_WORD_DATA)   | /* 0x0020 */
+   

[PATCH] staging: exfat: remove fs_func struct.

2020-01-16 Thread T.Kohada
Remove 'fs_func struct' and change indirect calls to direct calls.

The following issues are described in exfat's TODO.
> Create helper function for exfat_set_entry_time () and
> exfat_set_entry_type () because it's sort of ugly to be calling the same 
> functionn directly and other code calling through  the fs_func struc ponters 
> ...

The fs_func struct was used for switching the helper functions of 
fat16/fat32/exfat.
Now, it has lost the role of switching, just making the code less readable.

Signed-off-by: T.Kohada 
---
 drivers/staging/exfat/exfat.h   |  79 +--
 drivers/staging/exfat/exfat_core.c  | 194 +++-
 drivers/staging/exfat/exfat_super.c | 119 +
 3 files changed, 168 insertions(+), 224 deletions(-)

diff --git a/drivers/staging/exfat/exfat.h b/drivers/staging/exfat/exfat.h
index 51c665a924b7..ad3c1c3e0400 100644
--- a/drivers/staging/exfat/exfat.h
+++ b/drivers/staging/exfat/exfat.h
@@ -516,49 +516,6 @@ struct buf_cache_t {
struct buffer_head   *buf_bh;
 };
 
-struct fs_func {
-   s32 (*alloc_cluster)(struct super_block *sb, s32 num_alloc,
-struct chain_t *p_chain);
-   void(*free_cluster)(struct super_block *sb, struct chain_t *p_chain,
-   s32 do_relse);
-   s32 (*count_used_clusters)(struct super_block *sb);
-
-   s32 (*init_dir_entry)(struct super_block *sb, struct chain_t *p_dir,
- s32 entry, u32 type, u32 start_clu, u64 size);
-   s32 (*init_ext_entry)(struct super_block *sb, struct chain_t *p_dir,
- s32 entry, s32 num_entries,
- struct uni_name_t *p_uniname,
- struct dos_name_t *p_dosname);
-   s32 (*find_dir_entry)(struct super_block *sb, struct chain_t *p_dir,
- struct uni_name_t *p_uniname, s32 num_entries,
- struct dos_name_t *p_dosname, u32 type);
-   void(*delete_dir_entry)(struct super_block *sb,
-   struct chain_t *p_dir, s32 entry,
-   s32 offset, s32 num_entries);
-   void(*get_uni_name_from_ext_entry)(struct super_block *sb,
-  struct chain_t *p_dir, s32 entry,
-  u16 *uniname);
-   s32 (*count_ext_entries)(struct super_block *sb,
-struct chain_t *p_dir, s32 entry,
-struct dentry_t *p_entry);
-   s32 (*calc_num_entries)(struct uni_name_t *p_uniname);
-
-   u32 (*get_entry_type)(struct dentry_t *p_entry);
-   void(*set_entry_type)(struct dentry_t *p_entry, u32 type);
-   u32 (*get_entry_attr)(struct dentry_t *p_entry);
-   void(*set_entry_attr)(struct dentry_t *p_entry, u32 attr);
-   u8  (*get_entry_flag)(struct dentry_t *p_entry);
-   void(*set_entry_flag)(struct dentry_t *p_entry, u8 flag);
-   u32 (*get_entry_clu0)(struct dentry_t *p_entry);
-   void(*set_entry_clu0)(struct dentry_t *p_entry, u32 clu0);
-   u64 (*get_entry_size)(struct dentry_t *p_entry);
-   void(*set_entry_size)(struct dentry_t *p_entry, u64 size);
-   void(*get_entry_time)(struct dentry_t *p_entry,
- struct timestamp_t *tp, u8 mode);
-   void(*set_entry_time)(struct dentry_t *p_entry,
- struct timestamp_t *tp, u8 mode);
-};
-
 struct fs_info_t {
u32  drv;/* drive ID */
u32  vol_type;   /* volume FAT type */
@@ -597,7 +554,6 @@ struct fs_info_t {
 
u32 dev_ejected;/* block device operation error flag */
 
-   struct fs_func *fs_func;
struct mutex v_mutex;
 
/* FAT cache */
@@ -829,5 +785,40 @@ int exfat_bdev_write(struct super_block *sb, sector_t 
secno,
   struct buffer_head *bh, u32 num_secs, bool sync);
 int exfat_bdev_sync(struct super_block *sb);
 
+/* cluster operation functions */
+s32 exfat_alloc_cluster(struct super_block *sb, s32 num_alloc,
+   struct chain_t *p_chain);
+void exfat_free_cluster(struct super_block *sb, struct chain_t *p_chain,
+   s32 do_relse);
+s32 exfat_count_used_clusters(struct super_block *sb);
+
+/* dir operation functions */
+s32 exfat_find_dir_entry(struct super_block *sb, struct chain_t *p_dir,
+struct uni_name_t *p_uniname, s32 num_entries,
+struct dos_name_t *p_dosname, u32 type);
+void exfat_delete_dir_entry(struct super_block *sb, struct chain_t *p_dir,
+   s32 entry, s32 order, s32 num_entries);
+void exfat_get_uni_name_from_ext_entry(struct super_block *sb,
+