[arm-platforms:hack/devm_cast_abuse 3/17] drivers/tty/serial/sccnxp.c:923:9: error: implicit declaration of function 'devm_clk_prepare_enable'; did you mean
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git hack/devm_cast_abuse
head: 542cb40d75bf747a26ac91aa28f1a1ecb19b89e3
commit: 987add0e7cd705f0bf7beaa0543440d7db4a5736 [3/17] serial: sccnxp: Convert to devm_clk_prepare_enable()
config: sparc-randconfig-r022-20201215 (attached as .config)
compiler: sparc64-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git/com...
git remote add arm-platforms https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git
git fetch --no-tags arm-platforms hack/devm_cast_abuse
git checkout 987add0e7cd705f0bf7beaa0543440d7db4a5736
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=sparc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
drivers/tty/serial/sccnxp.c: In function 'sccnxp_probe':
>> drivers/tty/serial/sccnxp.c:923:9: error: implicit declaration of function 'devm_clk_prepare_enable'; did you mean 'clk_prepare_enable'? [-Werror=implicit-function-declaration]
923 | ret = devm_clk_prepare_enable(&pdev->dev, clk);
| ^~~~~~~~~~~~~~~~~~~~~~~
| clk_prepare_enable
cc1: some warnings being treated as errors
vim +923 drivers/tty/serial/sccnxp.c
880
881 static int sccnxp_probe(struct platform_device *pdev)
882 {
883 struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
884 struct sccnxp_pdata *pdata = dev_get_platdata(&pdev->dev);
885 int i, ret, uartclk;
886 struct sccnxp_port *s;
887 void __iomem *membase;
888 struct clk *clk;
889
890 membase = devm_ioremap_resource(&pdev->dev, res);
891 if (IS_ERR(membase))
892 return PTR_ERR(membase);
893
894 s = devm_kzalloc(&pdev->dev, sizeof(struct sccnxp_port), GFP_KERNEL);
895 if (!s) {
896 dev_err(&pdev->dev, "Error allocating port structure\n");
897 return -ENOMEM;
898 }
899 platform_set_drvdata(pdev, s);
900
901 spin_lock_init(&s->lock);
902
903 s->chip = (struct sccnxp_chip *)pdev->id_entry->driver_data;
904
905 s->regulator = devm_regulator_get(&pdev->dev, "vcc");
906 if (!IS_ERR(s->regulator)) {
907 ret = regulator_enable(s->regulator);
908 if (ret) {
909 dev_err(&pdev->dev,
910 "Failed to enable regulator: %i\n", ret);
911 return ret;
912 }
913 } else if (PTR_ERR(s->regulator) == -EPROBE_DEFER)
914 return -EPROBE_DEFER;
915
916 clk = devm_clk_get(&pdev->dev, NULL);
917 if (IS_ERR(clk)) {
918 ret = PTR_ERR(clk);
919 if (ret == -EPROBE_DEFER)
920 goto err_out;
921 uartclk = 0;
922 } else {
> 923 ret = devm_clk_prepare_enable(&pdev->dev, clk);
924 if (ret)
925 goto err_out;
926
927 uartclk = clk_get_rate(clk);
928 }
929
930 if (!uartclk) {
931 dev_notice(&pdev->dev, "Using default clock frequency\n");
932 uartclk = s->chip->freq_std;
933 }
934
935 /* Check input frequency */
936 if ((uartclk < s->chip->freq_min) || (uartclk > s->chip->freq_max)) {
937 dev_err(&pdev->dev, "Frequency out of bounds\n");
938 ret = -EINVAL;
939 goto err_out;
940 }
941
942 if (pdata)
943 memcpy(&s->pdata, pdata, sizeof(struct sccnxp_pdata));
944
945 if (s->pdata.poll_time_us) {
946 dev_info(&pdev->dev, "Using poll mode, resolution %u usecs\n",
947 s->pdata.poll_time_us);
948 s->poll = 1;
949 }
950
951 if (!s->poll) {
952 s->irq = platform_get_irq(pdev, 0);
953 if (s->irq < 0) {
954 ret = -ENXIO;
955 goto err_out;
956 }
957 }
958
959 s->uart.owner = THIS_MODULE;
960 s->uart.dev_name = "ttySC";
961 s->uart.major = SCCNXP_MAJOR;
962 s->uart.minor = SCCNXP_MINOR;
963 s->uart.nr = s->chip->nr;
964 #ifdef CONFIG_SERIAL_SCCNXP_CONSOLE
965 s->uart.cons = &s->console;
966 s->uart.cons->device = uart_console_device;
967 s->uart.cons->write = sccnxp_console_write;
968 s->uart.cons->setup = sccnxp_console_setup;
969 s->uart.cons->flags = CON_PRINTBUFFER;
970 s->uart.cons->index = -1;
971 s->uart.cons->data = s;
972 strcpy(s->uart.cons->name, "ttySC");
973 #endif
974 ret = uart_register_driver(&s->uart);
975 if (ret) {
976 dev_err(&pdev->dev, "Registering UART driver failed\n");
977 goto err_out;
978 }
979
980 for (i = 0; i < s->uart.nr; i++) {
981 s->port[i].line = i;
982 s->port[i].dev = &pdev->dev;
983 s->port[i].irq = s->irq;
984 s->port[i].type = PORT_SC26XX;
985 s->port[i].fifosize = s->chip->fifosize;
986 s->port[i].flags = UPF_SKIP_TEST | UPF_FIXED_TYPE;
987 s->port[i].iotype = UPIO_MEM;
988 s->port[i].mapbase = res->start;
989 s->port[i].membase = membase;
990 s->port[i].regshift = s->pdata.reg_shift;
991 s->port[i].uartclk = uartclk;
992 s->port[i].ops = &sccnxp_ops;
993 s->port[i].has_sysrq = IS_ENABLED(CONFIG_SERIAL_SCCNXP_CONSOLE);
994 uart_add_one_port(&s->uart, &s->port[i]);
995 /* Set direction to input */
996 if (s->chip->flags & SCCNXP_HAVE_IO)
997 sccnxp_set_bit(&s->port[i], DIR_OP, 0);
998 }
999
1000 /* Disable interrupts */
1001 s->imr = 0;
1002 sccnxp_write(&s->port[0], SCCNXP_IMR_REG, 0);
1003
1004 if (!s->poll) {
1005 ret = devm_request_threaded_irq(&pdev->dev, s->irq, NULL,
1006 sccnxp_ist,
1007 IRQF_TRIGGER_FALLING |
1008 IRQF_ONESHOT,
1009 dev_name(&pdev->dev), s);
1010 if (!ret)
1011 return 0;
1012
1013 dev_err(&pdev->dev, "Unable to reguest IRQ %i\n", s->irq);
1014 } else {
1015 timer_setup(&s->timer, sccnxp_timer, 0);
1016 mod_timer(&s->timer, jiffies +
1017 usecs_to_jiffies(s->pdata.poll_time_us));
1018 return 0;
1019 }
1020
1021 uart_unregister_driver(&s->uart);
1022 err_out:
1023 if (!IS_ERR(s->regulator))
1024 regulator_disable(s->regulator);
1025
1026 return ret;
1027 }
1028
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 9 months
[arm-platforms:hack/devm_cast_abuse 6/17] drivers/pci/controller/dwc/pci-meson.c:184:8: error: implicit declaration of function 'devm_clk_prepare_enable'; did you mean
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git hack/devm_cast_abuse
head: 542cb40d75bf747a26ac91aa28f1a1ecb19b89e3
commit: 7b5b40853d889135f4c38c3330a1275429d9e8d4 [6/17] PCI: dwc/meson: Convert to devm_clk_prepare_enable()
config: parisc-randconfig-r002-20201215 (attached as .config)
compiler: hppa-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git/com...
git remote add arm-platforms https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git
git fetch --no-tags arm-platforms hack/devm_cast_abuse
git checkout 7b5b40853d889135f4c38c3330a1275429d9e8d4
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=parisc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
drivers/pci/controller/dwc/pci-meson.c: In function 'meson_pcie_probe_clock':
>> drivers/pci/controller/dwc/pci-meson.c:184:8: error: implicit declaration of function 'devm_clk_prepare_enable'; did you mean 'clk_prepare_enable'? [-Werror=implicit-function-declaration]
184 | ret = devm_clk_prepare_enable(dev, clk);
| ^~~~~~~~~~~~~~~~~~~~~~~
| clk_prepare_enable
cc1: some warnings being treated as errors
vim +184 drivers/pci/controller/dwc/pci-meson.c
165
166 static inline struct clk *meson_pcie_probe_clock(struct device *dev,
167 const char *id, u64 rate)
168 {
169 struct clk *clk;
170 int ret;
171
172 clk = devm_clk_get(dev, id);
173 if (IS_ERR(clk))
174 return clk;
175
176 if (rate) {
177 ret = clk_set_rate(clk, rate);
178 if (ret) {
179 dev_err(dev, "set clk rate failed, ret = %d\n", ret);
180 return ERR_PTR(ret);
181 }
182 }
183
> 184 ret = devm_clk_prepare_enable(dev, clk);
185 if (ret) {
186 dev_err(dev, "couldn't enable clk\n");
187 return ERR_PTR(ret);
188 }
189
190 return clk;
191 }
192
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 9 months
[arm-platforms:hack/devm_cast_abuse 16/17] drivers/rtc/rtc-jz4740.c:333:8: error: implicit declaration of function 'devm_clk_prepare_enable'; did you mean
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git hack/devm_cast_abuse
head: 542cb40d75bf747a26ac91aa28f1a1ecb19b89e3
commit: fe1aec9b36b68f59f0c78233d76d4fdd4153a5a2 [16/17] rtc: Bulk conversion to devm_clk_prepare_enable()
config: m68k-randconfig-r012-20201215 (attached as .config)
compiler: m68k-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git/com...
git remote add arm-platforms https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git
git fetch --no-tags arm-platforms hack/devm_cast_abuse
git checkout fe1aec9b36b68f59f0c78233d76d4fdd4153a5a2
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=m68k
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
drivers/rtc/rtc-jz4740.c: In function 'jz4740_rtc_probe':
>> drivers/rtc/rtc-jz4740.c:333:8: error: implicit declaration of function 'devm_clk_prepare_enable'; did you mean 'clk_prepare_enable'? [-Werror=implicit-function-declaration]
333 | ret = devm_clk_prepare_enable(dev, clk);
| ^~~~~~~~~~~~~~~~~~~~~~~
| clk_prepare_enable
cc1: some warnings being treated as errors
vim +333 drivers/rtc/rtc-jz4740.c
303
304 static int jz4740_rtc_probe(struct platform_device *pdev)
305 {
306 struct device *dev = &pdev->dev;
307 struct device_node *np = dev->of_node;
308 struct jz4740_rtc *rtc;
309 unsigned long rate;
310 struct clk *clk;
311 int ret, irq;
312
313 rtc = devm_kzalloc(dev, sizeof(*rtc), GFP_KERNEL);
314 if (!rtc)
315 return -ENOMEM;
316
317 rtc->type = (enum jz4740_rtc_type)device_get_match_data(dev);
318
319 irq = platform_get_irq(pdev, 0);
320 if (irq < 0)
321 return irq;
322
323 rtc->base = devm_platform_ioremap_resource(pdev, 0);
324 if (IS_ERR(rtc->base))
325 return PTR_ERR(rtc->base);
326
327 clk = devm_clk_get(dev, "rtc");
328 if (IS_ERR(clk)) {
329 dev_err(dev, "Failed to get RTC clock\n");
330 return PTR_ERR(clk);
331 }
332
> 333 ret = devm_clk_prepare_enable(dev, clk);
334 if (ret) {
335 dev_err(dev, "Failed to register devm action\n");
336 return ret;
337 }
338
339 spin_lock_init(&rtc->lock);
340
341 platform_set_drvdata(pdev, rtc);
342
343 device_init_wakeup(dev, 1);
344
345 ret = dev_pm_set_wake_irq(dev, irq);
346 if (ret) {
347 dev_err(dev, "Failed to set wake irq: %d\n", ret);
348 return ret;
349 }
350
351 rtc->rtc = devm_rtc_allocate_device(dev);
352 if (IS_ERR(rtc->rtc)) {
353 ret = PTR_ERR(rtc->rtc);
354 dev_err(dev, "Failed to allocate rtc device: %d\n", ret);
355 return ret;
356 }
357
358 rtc->rtc->ops = &jz4740_rtc_ops;
359 rtc->rtc->range_max = U32_MAX;
360
361 rate = clk_get_rate(clk);
362 jz4740_rtc_set_wakeup_params(rtc, np, rate);
363
364 /* Each 1 Hz pulse should happen after (rate) ticks */
365 jz4740_rtc_reg_write(rtc, JZ_REG_RTC_REGULATOR, rate - 1);
366
367 ret = devm_rtc_register_device(rtc->rtc);
368 if (ret)
369 return ret;
370
371 ret = devm_request_irq(dev, irq, jz4740_rtc_irq, 0,
372 pdev->name, rtc);
373 if (ret) {
374 dev_err(dev, "Failed to request rtc irq: %d\n", ret);
375 return ret;
376 }
377
378 if (of_device_is_system_power_controller(np)) {
379 dev_for_power_off = dev;
380
381 if (!pm_power_off)
382 pm_power_off = jz4740_rtc_power_off;
383 else
384 dev_warn(dev, "Poweroff handler already present!\n");
385 }
386
387 return 0;
388 }
389
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 9 months
[iio:testing 12/12] drivers/iio/trigger/iio-trig-hrtimer.c:62:33: warning: integer overflow in expression of type 'long int' results in '-727379968'
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git testing
head: e5cfcce2ab02eabe42d31fa5d29ffdbebfd48675
commit: e5cfcce2ab02eabe42d31fa5d29ffdbebfd48675 [12/12] iio: hrtimer: Allow sub Hz granularity
config: mips-allyesconfig (attached as .config)
compiler: mips-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git/commit/?id=...
git remote add iio https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git
git fetch --no-tags iio testing
git checkout e5cfcce2ab02eabe42d31fa5d29ffdbebfd48675
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=mips
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
drivers/iio/trigger/iio-trig-hrtimer.c: In function 'iio_hrtimer_store_sampling_frequency':
>> drivers/iio/trigger/iio-trig-hrtimer.c:62:33: warning: integer overflow in expression of type 'long int' results in '-727379968' [-Woverflow]
62 | if (!val || val > NSEC_PER_SEC * 1000)
| ^
drivers/iio/trigger/iio-trig-hrtimer.c:67:30: warning: integer overflow in expression of type 'long int' results in '-727379968' [-Woverflow]
67 | info->period = NSEC_PER_SEC * 1000 / val;
| ^
vim +62 drivers/iio/trigger/iio-trig-hrtimer.c
45
46 static
47 ssize_t iio_hrtimer_store_sampling_frequency(struct device *dev,
48 struct device_attribute *attr,
49 const char *buf, size_t len)
50 {
51 struct iio_trigger *trig = to_iio_trigger(dev);
52 struct iio_hrtimer_info *info = iio_trigger_get_drvdata(trig);
53 unsigned long long val;
54 int integer, fract, ret;
55
56 ret = iio_str_to_fixpoint(buf, 100, &integer, &fract);
57 if (ret)
58 return ret;
59
60 val = fract + 1000 * integer;
61
> 62 if (!val || val > NSEC_PER_SEC * 1000)
63 return -EINVAL;
64
65 info->sampling_frequency[0] = integer;
66 info->sampling_frequency[1] = fract * 1000;
67 info->period = NSEC_PER_SEC * 1000 / val;
68
69 return len;
70 }
71
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 9 months
Re: [PATCH] scsi: qedf: Avoid invoking response handler twice if ep is already completed.
by kernel test robot
Hi Javed,
I love your patch! Perhaps something to improve:
[auto build test WARNING on mkp-scsi/for-next]
[also build test WARNING on scsi/for-next v5.10 next-20201215]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Javed-Hasan/scsi-qedf-Avoid-invo...
base: https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next
config: x86_64-randconfig-a013-20201215 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project a29ecca7819a6ed4250d3689b12b1f664bb790d7)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
# https://github.com/0day-ci/linux/commit/eafc014c649de737d637ee480fc1f5868...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Javed-Hasan/scsi-qedf-Avoid-invoking-response-handler-twice-if-ep-is-already-completed/20201216-001607
git checkout eafc014c649de737d637ee480fc1f5868dc5165a
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
>> drivers/scsi/libfc/fc_exch.c:1629:20: warning: missing terminating '"' character [-Winvalid-pp-token]
FC_EXCH_DBG(ep, " ep is completed already,
^
drivers/scsi/libfc/fc_exch.c:1630:35: warning: missing terminating '"' character [-Winvalid-pp-token]
hence skip calling the resp\n");
^
drivers/scsi/libfc/fc_exch.c:1911:19: warning: missing terminating '"' character [-Winvalid-pp-token]
FC_EXCH_DBG(ep, " ep is completed already,
^
drivers/scsi/libfc/fc_exch.c:1912:34: warning: missing terminating '"' character [-Winvalid-pp-token]
hence skip calling the resp\n");
^
drivers/scsi/libfc/fc_exch.c:1629:4: error: unterminated function-like macro invocation
FC_EXCH_DBG(ep, " ep is completed already,
^
drivers/scsi/libfc/fc_libfc.h:73:9: note: macro 'FC_EXCH_DBG' defined here
#define FC_EXCH_DBG(exch, fmt, args...) \
^
drivers/scsi/libfc/fc_exch.c:2712:2: error: expected '}'
}
^
drivers/scsi/libfc/fc_exch.c:1628:10: note: to match this '{'
} else {
^
drivers/scsi/libfc/fc_exch.c:2712:2: error: expected '}'
}
^
drivers/scsi/libfc/fc_exch.c:1621:40: note: to match this '{'
(FC_FC_LAST_SEQ | FC_FC_END_SEQ)) {
^
drivers/scsi/libfc/fc_exch.c:2712:2: error: expected '}'
}
^
drivers/scsi/libfc/fc_exch.c:1573:1: note: to match this '{'
{
^
drivers/scsi/libfc/fc_exch.c:1588:8: error: use of undeclared label 'rel'
goto rel;
^
drivers/scsi/libfc/fc_exch.c:1584:8: error: use of undeclared label 'out'
goto out;
^
4 warnings and 6 errors generated.
vim +1629 drivers/scsi/libfc/fc_exch.c
1564
1565 /**
1566 * fc_exch_recv_seq_resp() - Handler for an incoming response where the other
1567 * end is the originator of the sequence that is a
1568 * response to our initial exchange
1569 * @mp: The EM that the exchange is on
1570 * @fp: The response frame
1571 */
1572 static void fc_exch_recv_seq_resp(struct fc_exch_mgr *mp, struct fc_frame *fp)
1573 {
1574 struct fc_frame_header *fh = fc_frame_header_get(fp);
1575 struct fc_seq *sp;
1576 struct fc_exch *ep;
1577 enum fc_sof sof;
1578 u32 f_ctl;
1579 int rc;
1580
1581 ep = fc_exch_find(mp, ntohs(fh->fh_ox_id));
1582 if (!ep) {
1583 atomic_inc(&mp->stats.xid_not_found);
1584 goto out;
1585 }
1586 if (ep->esb_stat & ESB_ST_COMPLETE) {
1587 atomic_inc(&mp->stats.xid_not_found);
1588 goto rel;
1589 }
1590 if (ep->rxid == FC_XID_UNKNOWN)
1591 ep->rxid = ntohs(fh->fh_rx_id);
1592 if (ep->sid != 0 && ep->sid != ntoh24(fh->fh_d_id)) {
1593 atomic_inc(&mp->stats.xid_not_found);
1594 goto rel;
1595 }
1596 if (ep->did != ntoh24(fh->fh_s_id) &&
1597 ep->did != FC_FID_FLOGI) {
1598 atomic_inc(&mp->stats.xid_not_found);
1599 goto rel;
1600 }
1601 sof = fr_sof(fp);
1602 sp = &ep->seq;
1603 if (fc_sof_is_init(sof)) {
1604 sp->ssb_stat |= SSB_ST_RESP;
1605 sp->id = fh->fh_seq_id;
1606 }
1607
1608 f_ctl = ntoh24(fh->fh_f_ctl);
1609 fr_seq(fp) = sp;
1610
1611 spin_lock_bh(&ep->ex_lock);
1612 if (f_ctl & FC_FC_SEQ_INIT)
1613 ep->esb_stat |= ESB_ST_SEQ_INIT;
1614 spin_unlock_bh(&ep->ex_lock);
1615
1616 if (fc_sof_needs_ack(sof))
1617 fc_seq_send_ack(sp, fp);
1618
1619 if (fh->fh_type != FC_TYPE_FCP && fr_eof(fp) == FC_EOF_T &&
1620 (f_ctl & (FC_FC_LAST_SEQ | FC_FC_END_SEQ)) ==
1621 (FC_FC_LAST_SEQ | FC_FC_END_SEQ)) {
1622 spin_lock_bh(&ep->ex_lock);
1623 rc = fc_exch_done_locked(ep);
1624 WARN_ON(fc_seq_exch(sp) != ep);
1625 spin_unlock_bh(&ep->ex_lock);
1626 if (!rc) {
1627 fc_exch_delete(ep);
1628 } else {
> 1629 FC_EXCH_DBG(ep, " ep is completed already,
1630 hence skip calling the resp\n");
1631 goto skip_resp;
1632 }
1633 }
1634
1635 /*
1636 * Call the receive function.
1637 * The sequence is held (has a refcnt) for us,
1638 * but not for the receive function.
1639 *
1640 * The receive function may allocate a new sequence
1641 * over the old one, so we shouldn't change the
1642 * sequence after this.
1643 *
1644 * The frame will be freed by the receive function.
1645 * If new exch resp handler is valid then call that
1646 * first.
1647 */
1648 if (!fc_invoke_resp(ep, sp, fp))
1649 fc_frame_free(fp);
1650
1651 skip_resp:
1652 fc_exch_release(ep);
1653 return;
1654 rel:
1655 fc_exch_release(ep);
1656 out:
1657 fc_frame_free(fp);
1658 }
1659
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 9 months
[linux-stable-rc:linux-4.19.y 4411/9999] drivers/android/binder.c:3492: Error: unrecognized keyword/register name `l.lwz
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.19.y
head: e864f43593ccf9180c61738abdf1c1dde091367d
commit: b0cb2d8164d0dfd19ef050505fbf936b2df1b10d [4411/9999] android: binder: no outgoing transaction when thread todo has transaction
config: openrisc-randconfig-r033-20201215 (attached as .config)
compiler: or1k-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gi...
git remote add linux-stable-rc https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
git fetch --no-tags linux-stable-rc linux-4.19.y
git checkout b0cb2d8164d0dfd19ef050505fbf936b2df1b10d
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=openrisc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
drivers/android/binder.c: Assembler messages:
>> drivers/android/binder.c:3492: Error: unrecognized keyword/register name `l.lwz ?ap,4(r28)'
drivers/android/binder.c:3497: Error: unrecognized keyword/register name `l.addi ?ap,r0,0'
vim +3492 drivers/android/binder.c
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3325
fb07ebc3e82a98a drivers/staging/android/binder.c Bojan Prtvar 2013-09-02 3326 static int binder_thread_write(struct binder_proc *proc,
fb07ebc3e82a98a drivers/staging/android/binder.c Bojan Prtvar 2013-09-02 3327 struct binder_thread *thread,
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3328 binder_uintptr_t binder_buffer, size_t size,
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3329 binder_size_t *consumed)
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3330 {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3331 uint32_t cmd;
342e5c90b60134d drivers/android/binder.c Martijn Coenen 2017-02-03 3332 struct binder_context *context = proc->context;
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3333 void __user *buffer = (void __user *)(uintptr_t)binder_buffer;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3334 void __user *ptr = buffer + *consumed;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3335 void __user *end = buffer + size;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3336
26549d17741035b drivers/android/binder.c Todd Kjos 2017-06-29 3337 while (ptr < end && thread->return_error.cmd == BR_OK) {
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3338 int ret;
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3339
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3340 if (get_user(cmd, (uint32_t __user *)ptr))
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3341 return -EFAULT;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3342 ptr += sizeof(uint32_t);
975a1ac9a9fe65d drivers/staging/android/binder.c Arve Hjønnevåg 2012-10-16 3343 trace_binder_command(cmd);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3344 if (_IOC_NR(cmd) < ARRAY_SIZE(binder_stats.bc)) {
0953c7976c36ce0 drivers/android/binder.c Badhri Jagan Sridharan 2017-06-29 3345 atomic_inc(&binder_stats.bc[_IOC_NR(cmd)]);
0953c7976c36ce0 drivers/android/binder.c Badhri Jagan Sridharan 2017-06-29 3346 atomic_inc(&proc->stats.bc[_IOC_NR(cmd)]);
0953c7976c36ce0 drivers/android/binder.c Badhri Jagan Sridharan 2017-06-29 3347 atomic_inc(&thread->stats.bc[_IOC_NR(cmd)]);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3348 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3349 switch (cmd) {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3350 case BC_INCREFS:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3351 case BC_ACQUIRE:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3352 case BC_RELEASE:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3353 case BC_DECREFS: {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3354 uint32_t target;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3355 const char *debug_string;
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3356 bool strong = cmd == BC_ACQUIRE || cmd == BC_RELEASE;
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3357 bool increment = cmd == BC_INCREFS || cmd == BC_ACQUIRE;
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3358 struct binder_ref_data rdata;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3359
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3360 if (get_user(target, (uint32_t __user *)ptr))
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3361 return -EFAULT;
c44b1231ff11709 drivers/android/binder.c Todd Kjos 2017-06-29 3362
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3363 ptr += sizeof(uint32_t);
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3364 ret = -1;
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3365 if (increment && !target) {
c44b1231ff11709 drivers/android/binder.c Todd Kjos 2017-06-29 3366 struct binder_node *ctx_mgr_node;
c44b1231ff11709 drivers/android/binder.c Todd Kjos 2017-06-29 3367 mutex_lock(&context->context_mgr_node_lock);
c44b1231ff11709 drivers/android/binder.c Todd Kjos 2017-06-29 3368 ctx_mgr_node = context->binder_context_mgr_node;
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3369 if (ctx_mgr_node)
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3370 ret = binder_inc_ref_for_node(
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3371 proc, ctx_mgr_node,
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3372 strong, NULL, &rdata);
c44b1231ff11709 drivers/android/binder.c Todd Kjos 2017-06-29 3373 mutex_unlock(&context->context_mgr_node_lock);
c44b1231ff11709 drivers/android/binder.c Todd Kjos 2017-06-29 3374 }
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3375 if (ret)
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3376 ret = binder_update_ref_for_handle(
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3377 proc, target, increment, strong,
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3378 &rdata);
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3379 if (!ret && rdata.desc != target) {
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3380 binder_user_error("%d:%d tried to acquire reference to desc %d, got %d instead\n",
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3381 proc->pid, thread->pid,
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3382 target, rdata.desc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3383 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3384 switch (cmd) {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3385 case BC_INCREFS:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3386 debug_string = "IncRefs";
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3387 break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3388 case BC_ACQUIRE:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3389 debug_string = "Acquire";
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3390 break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3391 case BC_RELEASE:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3392 debug_string = "Release";
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3393 break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3394 case BC_DECREFS:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3395 default:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3396 debug_string = "DecRefs";
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3397 break;
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3398 }
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3399 if (ret) {
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3400 binder_user_error("%d:%d %s %d refcount change on invalid ref %d ret %d\n",
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3401 proc->pid, thread->pid, debug_string,
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3402 strong, target, ret);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3403 break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3404 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3405 binder_debug(BINDER_DEBUG_USER_REFS,
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3406 "%d:%d %s ref %d desc %d s %d w %d\n",
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3407 proc->pid, thread->pid, debug_string,
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3408 rdata.debug_id, rdata.desc, rdata.strong,
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3409 rdata.weak);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3410 break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3411 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3412 case BC_INCREFS_DONE:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3413 case BC_ACQUIRE_DONE: {
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3414 binder_uintptr_t node_ptr;
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3415 binder_uintptr_t cookie;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3416 struct binder_node *node;
673068eee8560d5 drivers/android/binder.c Todd Kjos 2017-06-29 3417 bool free_node;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3418
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3419 if (get_user(node_ptr, (binder_uintptr_t __user *)ptr))
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3420 return -EFAULT;
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3421 ptr += sizeof(binder_uintptr_t);
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3422 if (get_user(cookie, (binder_uintptr_t __user *)ptr))
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3423 return -EFAULT;
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3424 ptr += sizeof(binder_uintptr_t);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3425 node = binder_get_node(proc, node_ptr);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3426 if (node == NULL) {
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3427 binder_user_error("%d:%d %s u%016llx no match\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3428 proc->pid, thread->pid,
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3429 cmd == BC_INCREFS_DONE ?
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3430 "BC_INCREFS_DONE" :
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3431 "BC_ACQUIRE_DONE",
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3432 (u64)node_ptr);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3433 break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3434 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3435 if (cookie != node->cookie) {
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3436 binder_user_error("%d:%d %s u%016llx node %d cookie mismatch %016llx != %016llx\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3437 proc->pid, thread->pid,
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3438 cmd == BC_INCREFS_DONE ?
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3439 "BC_INCREFS_DONE" : "BC_ACQUIRE_DONE",
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3440 (u64)node_ptr, node->debug_id,
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3441 (u64)cookie, (u64)node->cookie);
adc1884222276df drivers/android/binder.c Todd Kjos 2017-06-29 3442 binder_put_node(node);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3443 break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3444 }
673068eee8560d5 drivers/android/binder.c Todd Kjos 2017-06-29 3445 binder_node_inner_lock(node);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3446 if (cmd == BC_ACQUIRE_DONE) {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3447 if (node->pending_strong_ref == 0) {
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3448 binder_user_error("%d:%d BC_ACQUIRE_DONE node %d has no pending acquire request\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3449 proc->pid, thread->pid,
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3450 node->debug_id);
673068eee8560d5 drivers/android/binder.c Todd Kjos 2017-06-29 3451 binder_node_inner_unlock(node);
adc1884222276df drivers/android/binder.c Todd Kjos 2017-06-29 3452 binder_put_node(node);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3453 break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3454 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3455 node->pending_strong_ref = 0;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3456 } else {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3457 if (node->pending_weak_ref == 0) {
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3458 binder_user_error("%d:%d BC_INCREFS_DONE node %d has no pending increfs request\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3459 proc->pid, thread->pid,
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3460 node->debug_id);
673068eee8560d5 drivers/android/binder.c Todd Kjos 2017-06-29 3461 binder_node_inner_unlock(node);
adc1884222276df drivers/android/binder.c Todd Kjos 2017-06-29 3462 binder_put_node(node);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3463 break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3464 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3465 node->pending_weak_ref = 0;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3466 }
673068eee8560d5 drivers/android/binder.c Todd Kjos 2017-06-29 3467 free_node = binder_dec_node_nilocked(node,
673068eee8560d5 drivers/android/binder.c Todd Kjos 2017-06-29 3468 cmd == BC_ACQUIRE_DONE, 0);
673068eee8560d5 drivers/android/binder.c Todd Kjos 2017-06-29 3469 WARN_ON(free_node);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3470 binder_debug(BINDER_DEBUG_USER_REFS,
adc1884222276df drivers/android/binder.c Todd Kjos 2017-06-29 3471 "%d:%d %s node %d ls %d lw %d tr %d\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3472 proc->pid, thread->pid,
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3473 cmd == BC_INCREFS_DONE ? "BC_INCREFS_DONE" : "BC_ACQUIRE_DONE",
adc1884222276df drivers/android/binder.c Todd Kjos 2017-06-29 3474 node->debug_id, node->local_strong_refs,
adc1884222276df drivers/android/binder.c Todd Kjos 2017-06-29 3475 node->local_weak_refs, node->tmp_refs);
673068eee8560d5 drivers/android/binder.c Todd Kjos 2017-06-29 3476 binder_node_inner_unlock(node);
adc1884222276df drivers/android/binder.c Todd Kjos 2017-06-29 3477 binder_put_node(node);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3478 break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3479 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3480 case BC_ATTEMPT_ACQUIRE:
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3481 pr_err("BC_ATTEMPT_ACQUIRE not supported\n");
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3482 return -EINVAL;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3483 case BC_ACQUIRE_RESULT:
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3484 pr_err("BC_ACQUIRE_RESULT not supported\n");
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3485 return -EINVAL;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3486
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3487 case BC_FREE_BUFFER: {
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3488 binder_uintptr_t data_ptr;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3489 struct binder_buffer *buffer;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3490
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3491 if (get_user(data_ptr, (binder_uintptr_t __user *)ptr))
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 @3492 return -EFAULT;
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3493 ptr += sizeof(binder_uintptr_t);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3494
53d311cfa19ad35 drivers/android/binder.c Todd Kjos 2017-06-29 3495 buffer = binder_alloc_prepare_to_free(&proc->alloc,
19c987241ca1216 drivers/android/binder.c Todd Kjos 2017-06-29 3496 data_ptr);
553927d6aab993e drivers/android/binder.c Todd Kjos 2018-11-06 3497 if (IS_ERR_OR_NULL(buffer)) {
553927d6aab993e drivers/android/binder.c Todd Kjos 2018-11-06 3498 if (PTR_ERR(buffer) == -EPERM) {
553927d6aab993e drivers/android/binder.c Todd Kjos 2018-11-06 3499 binder_user_error(
553927d6aab993e drivers/android/binder.c Todd Kjos 2018-11-06 3500 "%d:%d BC_FREE_BUFFER u%016llx matched unreturned or currently freeing buffer\n",
553927d6aab993e drivers/android/binder.c Todd Kjos 2018-11-06 3501 proc->pid, thread->pid,
553927d6aab993e drivers/android/binder.c Todd Kjos 2018-11-06 3502 (u64)data_ptr);
553927d6aab993e drivers/android/binder.c Todd Kjos 2018-11-06 3503 } else {
553927d6aab993e drivers/android/binder.c Todd Kjos 2018-11-06 3504 binder_user_error(
553927d6aab993e drivers/android/binder.c Todd Kjos 2018-11-06 3505 "%d:%d BC_FREE_BUFFER u%016llx no match\n",
553927d6aab993e drivers/android/binder.c Todd Kjos 2018-11-06 3506 proc->pid, thread->pid,
553927d6aab993e drivers/android/binder.c Todd Kjos 2018-11-06 3507 (u64)data_ptr);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3508 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3509 break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3510 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3511 binder_debug(BINDER_DEBUG_FREE_BUFFER,
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3512 "%d:%d BC_FREE_BUFFER u%016llx found buffer %d for %s transaction\n",
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3513 proc->pid, thread->pid, (u64)data_ptr,
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3514 buffer->debug_id,
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3515 buffer->transaction ? "active" : "finished");
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3516
22068d49d09d2b3 drivers/android/binder.c Todd Kjos 2019-06-12 3517 binder_inner_proc_lock(proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3518 if (buffer->transaction) {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3519 buffer->transaction->buffer = NULL;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3520 buffer->transaction = NULL;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3521 }
22068d49d09d2b3 drivers/android/binder.c Todd Kjos 2019-06-12 3522 binder_inner_proc_unlock(proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3523 if (buffer->async_transaction && buffer->target_node) {
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3524 struct binder_node *buf_node;
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3525 struct binder_work *w;
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3526
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3527 buf_node = buffer->target_node;
673068eee8560d5 drivers/android/binder.c Todd Kjos 2017-06-29 3528 binder_node_inner_lock(buf_node);
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3529 BUG_ON(!buf_node->has_async_transaction);
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3530 BUG_ON(buf_node->proc != proc);
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3531 w = binder_dequeue_work_head_ilocked(
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3532 &buf_node->async_todo);
3a6430ce462172c drivers/android/binder.c Martijn Coenen 2017-08-31 3533 if (!w) {
197410ad884eb18 drivers/android/binder.c Gustavo A. R. Silva 2018-01-23 3534 buf_node->has_async_transaction = false;
3a6430ce462172c drivers/android/binder.c Martijn Coenen 2017-08-31 3535 } else {
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3536 binder_enqueue_work_ilocked(
3a6430ce462172c drivers/android/binder.c Martijn Coenen 2017-08-31 3537 w, &proc->todo);
3a6430ce462172c drivers/android/binder.c Martijn Coenen 2017-08-31 3538 binder_wakeup_proc_ilocked(proc);
3a6430ce462172c drivers/android/binder.c Martijn Coenen 2017-08-31 3539 }
673068eee8560d5 drivers/android/binder.c Todd Kjos 2017-06-29 3540 binder_node_inner_unlock(buf_node);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3541 }
975a1ac9a9fe65d drivers/staging/android/binder.c Arve Hjønnevåg 2012-10-16 3542 trace_binder_transaction_buffer_release(buffer);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3543 binder_transaction_buffer_release(proc, buffer, NULL);
19c987241ca1216 drivers/android/binder.c Todd Kjos 2017-06-29 3544 binder_alloc_free_buf(&proc->alloc, buffer);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3545 break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3546 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3547
7980240b6d63e06 drivers/android/binder.c Martijn Coenen 2017-02-03 3548 case BC_TRANSACTION_SG:
7980240b6d63e06 drivers/android/binder.c Martijn Coenen 2017-02-03 3549 case BC_REPLY_SG: {
7980240b6d63e06 drivers/android/binder.c Martijn Coenen 2017-02-03 3550 struct binder_transaction_data_sg tr;
7980240b6d63e06 drivers/android/binder.c Martijn Coenen 2017-02-03 3551
7980240b6d63e06 drivers/android/binder.c Martijn Coenen 2017-02-03 3552 if (copy_from_user(&tr, ptr, sizeof(tr)))
7980240b6d63e06 drivers/android/binder.c Martijn Coenen 2017-02-03 3553 return -EFAULT;
7980240b6d63e06 drivers/android/binder.c Martijn Coenen 2017-02-03 3554 ptr += sizeof(tr);
7980240b6d63e06 drivers/android/binder.c Martijn Coenen 2017-02-03 3555 binder_transaction(proc, thread, &tr.transaction_data,
7980240b6d63e06 drivers/android/binder.c Martijn Coenen 2017-02-03 3556 cmd == BC_REPLY_SG, tr.buffers_size);
7980240b6d63e06 drivers/android/binder.c Martijn Coenen 2017-02-03 3557 break;
7980240b6d63e06 drivers/android/binder.c Martijn Coenen 2017-02-03 3558 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3559 case BC_TRANSACTION:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3560 case BC_REPLY: {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3561 struct binder_transaction_data tr;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3562
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3563 if (copy_from_user(&tr, ptr, sizeof(tr)))
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3564 return -EFAULT;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3565 ptr += sizeof(tr);
4bfac80af3a63f2 drivers/android/binder.c Martijn Coenen 2017-02-03 3566 binder_transaction(proc, thread, &tr,
4bfac80af3a63f2 drivers/android/binder.c Martijn Coenen 2017-02-03 3567 cmd == BC_REPLY, 0);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3568 break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3569 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3570
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3571 case BC_REGISTER_LOOPER:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3572 binder_debug(BINDER_DEBUG_THREADS,
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3573 "%d:%d BC_REGISTER_LOOPER\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3574 proc->pid, thread->pid);
b3e6861283790d7 drivers/android/binder.c Todd Kjos 2017-06-29 3575 binder_inner_proc_lock(proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3576 if (thread->looper & BINDER_LOOPER_STATE_ENTERED) {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3577 thread->looper |= BINDER_LOOPER_STATE_INVALID;
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3578 binder_user_error("%d:%d ERROR: BC_REGISTER_LOOPER called after BC_ENTER_LOOPER\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3579 proc->pid, thread->pid);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3580 } else if (proc->requested_threads == 0) {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3581 thread->looper |= BINDER_LOOPER_STATE_INVALID;
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3582 binder_user_error("%d:%d ERROR: BC_REGISTER_LOOPER called without request\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3583 proc->pid, thread->pid);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3584 } else {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3585 proc->requested_threads--;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3586 proc->requested_threads_started++;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3587 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3588 thread->looper |= BINDER_LOOPER_STATE_REGISTERED;
b3e6861283790d7 drivers/android/binder.c Todd Kjos 2017-06-29 3589 binder_inner_proc_unlock(proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3590 break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3591 case BC_ENTER_LOOPER:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3592 binder_debug(BINDER_DEBUG_THREADS,
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3593 "%d:%d BC_ENTER_LOOPER\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3594 proc->pid, thread->pid);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3595 if (thread->looper & BINDER_LOOPER_STATE_REGISTERED) {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3596 thread->looper |= BINDER_LOOPER_STATE_INVALID;
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3597 binder_user_error("%d:%d ERROR: BC_ENTER_LOOPER called after BC_REGISTER_LOOPER\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3598 proc->pid, thread->pid);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3599 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3600 thread->looper |= BINDER_LOOPER_STATE_ENTERED;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3601 break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3602 case BC_EXIT_LOOPER:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3603 binder_debug(BINDER_DEBUG_THREADS,
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3604 "%d:%d BC_EXIT_LOOPER\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3605 proc->pid, thread->pid);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3606 thread->looper |= BINDER_LOOPER_STATE_EXITED;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3607 break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3608
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3609 case BC_REQUEST_DEATH_NOTIFICATION:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3610 case BC_CLEAR_DEATH_NOTIFICATION: {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3611 uint32_t target;
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3612 binder_uintptr_t cookie;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3613 struct binder_ref *ref;
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3614 struct binder_ref_death *death = NULL;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3615
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3616 if (get_user(target, (uint32_t __user *)ptr))
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3617 return -EFAULT;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3618 ptr += sizeof(uint32_t);
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3619 if (get_user(cookie, (binder_uintptr_t __user *)ptr))
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3620 return -EFAULT;
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3621 ptr += sizeof(binder_uintptr_t);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3622 if (cmd == BC_REQUEST_DEATH_NOTIFICATION) {
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3623 /*
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3624 * Allocate memory for death notification
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3625 * before taking lock
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3626 */
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3627 death = kzalloc(sizeof(*death), GFP_KERNEL);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3628 if (death == NULL) {
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3629 WARN_ON(thread->return_error.cmd !=
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3630 BR_OK);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3631 thread->return_error.cmd = BR_ERROR;
148ade2c4d4f46b drivers/android/binder.c Martijn Coenen 2017-11-15 3632 binder_enqueue_thread_work(
148ade2c4d4f46b drivers/android/binder.c Martijn Coenen 2017-11-15 3633 thread,
148ade2c4d4f46b drivers/android/binder.c Martijn Coenen 2017-11-15 3634 &thread->return_error.work);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3635 binder_debug(
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3636 BINDER_DEBUG_FAILED_TRANSACTION,
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3637 "%d:%d BC_REQUEST_DEATH_NOTIFICATION failed\n",
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3638 proc->pid, thread->pid);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3639 break;
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3640 }
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3641 }
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3642 binder_proc_lock(proc);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3643 ref = binder_get_ref_olocked(proc, target, false);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3644 if (ref == NULL) {
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3645 binder_user_error("%d:%d %s invalid ref %d\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3646 proc->pid, thread->pid,
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3647 cmd == BC_REQUEST_DEATH_NOTIFICATION ?
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3648 "BC_REQUEST_DEATH_NOTIFICATION" :
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3649 "BC_CLEAR_DEATH_NOTIFICATION",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3650 target);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3651 binder_proc_unlock(proc);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3652 kfree(death);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3653 break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3654 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3655
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3656 binder_debug(BINDER_DEBUG_DEATH_NOTIFICATION,
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3657 "%d:%d %s %016llx ref %d desc %d s %d w %d for node %d\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3658 proc->pid, thread->pid,
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3659 cmd == BC_REQUEST_DEATH_NOTIFICATION ?
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3660 "BC_REQUEST_DEATH_NOTIFICATION" :
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3661 "BC_CLEAR_DEATH_NOTIFICATION",
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3662 (u64)cookie, ref->data.debug_id,
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3663 ref->data.desc, ref->data.strong,
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3664 ref->data.weak, ref->node->debug_id);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3665
ab51ec6bdf0b7af drivers/android/binder.c Martijn Coenen 2017-06-29 3666 binder_node_lock(ref->node);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3667 if (cmd == BC_REQUEST_DEATH_NOTIFICATION) {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3668 if (ref->death) {
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3669 binder_user_error("%d:%d BC_REQUEST_DEATH_NOTIFICATION death notification already set\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3670 proc->pid, thread->pid);
ab51ec6bdf0b7af drivers/android/binder.c Martijn Coenen 2017-06-29 3671 binder_node_unlock(ref->node);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3672 binder_proc_unlock(proc);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3673 kfree(death);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3674 break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3675 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3676 binder_stats_created(BINDER_STAT_DEATH);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3677 INIT_LIST_HEAD(&death->work.entry);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3678 death->cookie = cookie;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3679 ref->death = death;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3680 if (ref->node->proc == NULL) {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3681 ref->death->work.type = BINDER_WORK_DEAD_BINDER;
bb74562a7f83982 drivers/android/binder.c Martijn Coenen 2017-08-31 3682
1b77e9dcc3da935 drivers/android/binder.c Martijn Coenen 2017-08-31 3683 binder_inner_proc_lock(proc);
1b77e9dcc3da935 drivers/android/binder.c Martijn Coenen 2017-08-31 3684 binder_enqueue_work_ilocked(
bb74562a7f83982 drivers/android/binder.c Martijn Coenen 2017-08-31 3685 &ref->death->work, &proc->todo);
bb74562a7f83982 drivers/android/binder.c Martijn Coenen 2017-08-31 3686 binder_wakeup_proc_ilocked(proc);
1b77e9dcc3da935 drivers/android/binder.c Martijn Coenen 2017-08-31 3687 binder_inner_proc_unlock(proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3688 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3689 } else {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3690 if (ref->death == NULL) {
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3691 binder_user_error("%d:%d BC_CLEAR_DEATH_NOTIFICATION death notification not active\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3692 proc->pid, thread->pid);
673068eee8560d5 drivers/android/binder.c Todd Kjos 2017-06-29 3693 binder_node_unlock(ref->node);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3694 binder_proc_unlock(proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3695 break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3696 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3697 death = ref->death;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3698 if (death->cookie != cookie) {
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3699 binder_user_error("%d:%d BC_CLEAR_DEATH_NOTIFICATION death notification cookie mismatch %016llx != %016llx\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3700 proc->pid, thread->pid,
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3701 (u64)death->cookie,
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3702 (u64)cookie);
673068eee8560d5 drivers/android/binder.c Todd Kjos 2017-06-29 3703 binder_node_unlock(ref->node);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3704 binder_proc_unlock(proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3705 break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3706 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3707 ref->death = NULL;
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3708 binder_inner_proc_lock(proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3709 if (list_empty(&death->work.entry)) {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3710 death->work.type = BINDER_WORK_CLEAR_DEATH_NOTIFICATION;
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3711 if (thread->looper &
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3712 (BINDER_LOOPER_STATE_REGISTERED |
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3713 BINDER_LOOPER_STATE_ENTERED))
148ade2c4d4f46b drivers/android/binder.c Martijn Coenen 2017-11-15 3714 binder_enqueue_thread_work_ilocked(
148ade2c4d4f46b drivers/android/binder.c Martijn Coenen 2017-11-15 3715 thread,
148ade2c4d4f46b drivers/android/binder.c Martijn Coenen 2017-11-15 3716 &death->work);
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3717 else {
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3718 binder_enqueue_work_ilocked(
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3719 &death->work,
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3720 &proc->todo);
1b77e9dcc3da935 drivers/android/binder.c Martijn Coenen 2017-08-31 3721 binder_wakeup_proc_ilocked(
408c68b17aea2f2 drivers/android/binder.c Martijn Coenen 2017-08-31 3722 proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3723 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3724 } else {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3725 BUG_ON(death->work.type != BINDER_WORK_DEAD_BINDER);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3726 death->work.type = BINDER_WORK_DEAD_BINDER_AND_CLEAR;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3727 }
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3728 binder_inner_proc_unlock(proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3729 }
ab51ec6bdf0b7af drivers/android/binder.c Martijn Coenen 2017-06-29 3730 binder_node_unlock(ref->node);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3731 binder_proc_unlock(proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3732 } break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3733 case BC_DEAD_BINDER_DONE: {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3734 struct binder_work *w;
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3735 binder_uintptr_t cookie;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3736 struct binder_ref_death *death = NULL;
10f62861b4a2f22 drivers/staging/android/binder.c Seunghun Lee 2014-05-01 3737
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3738 if (get_user(cookie, (binder_uintptr_t __user *)ptr))
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3739 return -EFAULT;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3740
7a64cd887fdb97f drivers/android/binder.c Lisa Du 2016-02-17 3741 ptr += sizeof(cookie);
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3742 binder_inner_proc_lock(proc);
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3743 list_for_each_entry(w, &proc->delivered_death,
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3744 entry) {
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3745 struct binder_ref_death *tmp_death =
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3746 container_of(w,
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3747 struct binder_ref_death,
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3748 work);
10f62861b4a2f22 drivers/staging/android/binder.c Seunghun Lee 2014-05-01 3749
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3750 if (tmp_death->cookie == cookie) {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3751 death = tmp_death;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3752 break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3753 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3754 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3755 binder_debug(BINDER_DEBUG_DEAD_BINDER,
8ca86f1639ec589 drivers/android/binder.c Todd Kjos 2018-02-07 3756 "%d:%d BC_DEAD_BINDER_DONE %016llx found %pK\n",
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3757 proc->pid, thread->pid, (u64)cookie,
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3758 death);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3759 if (death == NULL) {
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3760 binder_user_error("%d:%d BC_DEAD_BINDER_DONE %016llx not found\n",
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3761 proc->pid, thread->pid, (u64)cookie);
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3762 binder_inner_proc_unlock(proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3763 break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3764 }
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3765 binder_dequeue_work_ilocked(&death->work);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3766 if (death->work.type == BINDER_WORK_DEAD_BINDER_AND_CLEAR) {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3767 death->work.type = BINDER_WORK_CLEAR_DEATH_NOTIFICATION;
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3768 if (thread->looper &
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3769 (BINDER_LOOPER_STATE_REGISTERED |
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3770 BINDER_LOOPER_STATE_ENTERED))
148ade2c4d4f46b drivers/android/binder.c Martijn Coenen 2017-11-15 3771 binder_enqueue_thread_work_ilocked(
148ade2c4d4f46b drivers/android/binder.c Martijn Coenen 2017-11-15 3772 thread, &death->work);
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3773 else {
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3774 binder_enqueue_work_ilocked(
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3775 &death->work,
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3776 &proc->todo);
408c68b17aea2f2 drivers/android/binder.c Martijn Coenen 2017-08-31 3777 binder_wakeup_proc_ilocked(proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3778 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3779 }
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3780 binder_inner_proc_unlock(proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3781 } break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3782
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3783 default:
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3784 pr_err("%d:%d unknown command %d\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3785 proc->pid, thread->pid, cmd);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3786 return -EINVAL;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3787 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3788 *consumed = ptr - buffer;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3789 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3790 return 0;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3791 }
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3792
:::::: The code at line 3492 was first introduced by commit
:::::: 355b0502f6efea0ff9492753888772c96972d2a3 Revert "Staging: android: delete android drivers"
:::::: TO: Greg Kroah-Hartman <gregkh(a)suse.de>
:::::: CC: Greg Kroah-Hartman <gregkh(a)suse.de>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 9 months
Re: [PATCH v6 3/9] media: imx-jpeg: Add V4L2 driver for i.MX8 JPEG Encoder/Decoder
by kernel test robot
Hi "Mirela,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on linuxtv-media/master]
[also build test WARNING on linus/master next-20201215]
[cannot apply to shawnguo/for-next robh/for-next v5.10]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Mirela-Rabulea-OSS/Add-V4L2-driv...
base: git://linuxtv.org/media_tree.git master
config: x86_64-randconfig-m001-20201215 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
smatch warnings:
drivers/media/platform/imx-jpeg/mxc-jpeg.c:1408 mxc_jpeg_parse() warn: inconsistent indenting
vim +1408 drivers/media/platform/imx-jpeg/mxc-jpeg.c
1321
1322 static int mxc_jpeg_parse(struct mxc_jpeg_ctx *ctx,
1323 u8 *src_addr, u32 size, bool *dht_needed)
1324 {
1325 struct device *dev = ctx->mxc_jpeg->dev;
1326 struct mxc_jpeg_q_data *q_data_out, *q_data_cap;
1327 enum v4l2_buf_type cap_type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
1328 struct mxc_jpeg_stream stream;
1329 bool notfound = true;
1330 bool app14 = false;
1331 bool src_chg = false;
1332 u8 app14_transform = 0;
1333 struct mxc_jpeg_sof sof, *psof = NULL;
1334 struct mxc_jpeg_sos *psos = NULL;
1335 int byte;
1336 u8 *next = NULL;
1337 enum mxc_jpeg_image_format img_fmt;
1338 u32 fourcc;
1339
1340 memset(&sof, 0, sizeof(struct mxc_jpeg_sof));
1341 stream.addr = src_addr;
1342 stream.end = size;
1343 stream.loc = 0;
1344 *dht_needed = true;
1345
1346 /* check stream starts with SOI */
1347 byte = get_byte(&stream);
1348 if (byte == -1 || byte != 0xFF)
1349 return -EINVAL;
1350 byte = get_byte(&stream);
1351 if (byte == -1 || byte != 0xD8)
1352 return -EINVAL;
1353
1354 while (notfound) {
1355 byte = get_byte(&stream);
1356 if (byte == -1)
1357 return -EINVAL;
1358 if (byte != 0xff)
1359 continue;
1360 do {
1361 byte = get_byte(&stream);
1362 } while (byte == 0xff);
1363 if (byte == -1)
1364 return false;
1365 if (byte == 0)
1366 continue;
1367 switch (byte) {
1368 case DHT:
1369 /* DHT marker present, no need to inject default one */
1370 *dht_needed = false;
1371 break;
1372 case SOF2: /* Progressive DCF frame definition */
1373 dev_err(dev,
1374 "Progressive JPEG not supported by hardware");
1375 return -EINVAL;
1376 case SOF1: /* Extended sequential DCF frame definition */
1377 case SOF0: /* Baseline sequential DCF frame definition */
1378 if (get_sof(dev, &stream, &sof) == -1)
1379 break;
1380 next = stream.addr + stream.loc;
1381 psof = (struct mxc_jpeg_sof *)next;
1382 break;
1383 case SOS:
1384 next = stream.addr + stream.loc;
1385 psos = (struct mxc_jpeg_sos *)next;
1386 notfound = false;
1387 break;
1388 case APP14:
1389 app14 = true;
1390 /*
1391 * Application Data Syntax is:
1392 * 2 bytes(APPn:0xFF,0xEE), 2 bytes(Lp), Ap1...ApLp-2
1393 * The transform flag is in Ap12
1394 * stream.loc is now on APPn-0xEE byte
1395 */
1396 app14_transform = *(stream.addr + stream.loc + 12 + 1);
1397 break;
1398 default:
1399 notfound = true;
1400 }
1401 }
1402 q_data_out = mxc_jpeg_get_q_data(ctx,
1403 V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE);
1404 if (q_data_out->w == 0 && q_data_out->h == 0) {
1405 dev_warn(dev, "Invalid user resolution 0x0");
1406 dev_warn(dev, "Keeping resolution from JPEG: %dx%d",
1407 sof.width, sof.height);
> 1408 q_data_out->w = sof.width;
1409 q_data_out->h = sof.height;
1410 } else if (sof.width != q_data_out->w || sof.height != q_data_out->h) {
1411 dev_err(dev,
1412 "Resolution mismatch: %dx%d (JPEG) versus %dx%d(user)",
1413 sof.width, sof.height, q_data_out->w, q_data_out->h);
1414 return -EINVAL;
1415 }
1416 if (sof.width % 8 != 0 || sof.height % 8 != 0) {
1417 dev_err(dev, "JPEG width or height not multiple of 8: %dx%d\n",
1418 sof.width, sof.height);
1419 return -EINVAL;
1420 }
1421 if (sof.width > MXC_JPEG_MAX_WIDTH ||
1422 sof.height > MXC_JPEG_MAX_HEIGHT) {
1423 dev_err(dev, "JPEG width or height should be <= 8192: %dx%d\n",
1424 sof.width, sof.height);
1425 return -EINVAL;
1426 }
1427 if (sof.width < MXC_JPEG_MIN_WIDTH ||
1428 sof.height < MXC_JPEG_MIN_HEIGHT) {
1429 dev_err(dev, "JPEG width or height should be > 64: %dx%d\n",
1430 sof.width, sof.height);
1431 return -EINVAL;
1432 }
1433 if (sof.components_no > MXC_JPEG_MAX_COMPONENTS) {
1434 dev_err(dev, "JPEG number of components should be <=%d",
1435 MXC_JPEG_MAX_COMPONENTS);
1436 return -EINVAL;
1437 }
1438 /* check and, if necessary, patch component IDs*/
1439 if (!mxc_jpeg_valid_comp_id(dev, psof, psos))
1440 dev_warn(dev, "JPEG component ids should be 0-3 or 1-4");
1441
1442 img_fmt = mxc_jpeg_get_image_format(dev, &sof);
1443 if (img_fmt == MXC_JPEG_INVALID)
1444 return -EINVAL;
1445
1446 /*
1447 * If the transform flag from APP14 marker is 0, images that are
1448 * encoded with 3 components have RGB colorspace, see Recommendation
1449 * ITU-T T.872 chapter 6.5.3 APP14 marker segment for colour encoding
1450 */
1451 if (img_fmt == MXC_JPEG_YUV444 && app14 && app14_transform == 0)
1452 img_fmt = MXC_JPEG_RGB;
1453
1454 if (mxc_jpeg_imgfmt_to_fourcc(img_fmt, &fourcc)) {
1455 dev_err(dev, "Fourcc not found for %d", img_fmt);
1456 return -EINVAL;
1457 }
1458
1459 /*
1460 * set-up the capture queue with the pixelformat and resolution
1461 * detected from the jpeg output stream
1462 */
1463 q_data_cap = mxc_jpeg_get_q_data(ctx, cap_type);
1464 if (q_data_cap->w != sof.width || q_data_cap->h != sof.height)
1465 src_chg = true;
1466 q_data_cap->w = sof.width;
1467 q_data_cap->h = sof.height;
1468 q_data_cap->fmt = mxc_jpeg_find_format(ctx, fourcc);
1469 q_data_cap->w_adjusted = q_data_cap->w;
1470 q_data_cap->h_adjusted = q_data_cap->h;
1471 /*
1472 * align up the resolution for CAST IP,
1473 * but leave the buffer resolution unchanged
1474 */
1475 v4l_bound_align_image(&q_data_cap->w_adjusted,
1476 q_data_cap->w_adjusted, /* adjust up */
1477 MXC_JPEG_MAX_WIDTH,
1478 q_data_cap->fmt->h_align,
1479 &q_data_cap->h_adjusted,
1480 q_data_cap->h_adjusted, /* adjust up */
1481 MXC_JPEG_MAX_HEIGHT,
1482 q_data_cap->fmt->v_align,
1483 0);
1484 dev_dbg(dev, "Detected jpeg res=(%dx%d)->(%dx%d), pixfmt=%c%c%c%c\n",
1485 q_data_cap->w, q_data_cap->h,
1486 q_data_cap->w_adjusted, q_data_cap->h_adjusted,
1487 (fourcc & 0xff),
1488 (fourcc >> 8) & 0xff,
1489 (fourcc >> 16) & 0xff,
1490 (fourcc >> 24) & 0xff);
1491
1492 /* setup bytesperline/sizeimage for capture queue */
1493 mxc_jpeg_bytesperline(q_data_cap, sof.precision);
1494 mxc_jpeg_sizeimage(q_data_cap);
1495
1496 /*
1497 * if the CAPTURE format was updated with new values, regardless of
1498 * whether they match the values set by the client or not, signal
1499 * a source change event
1500 */
1501 if (src_chg)
1502 notify_src_chg(ctx);
1503
1504 return 0;
1505 }
1506
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 9 months