Hi Andy,
I love your patch! Yet something to improve:
[auto build test ERROR on balbi-usb/next]
[also build test ERROR on mkp-scsi/for-next linus/master asm-generic/master v5.6-rc5
next-20200312]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see
https://stackoverflow.com/a/37406982]
url:
https://github.com/0day-ci/linux/commits/Andy-Shevchenko/asm-generic-Prov...
base:
https://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git next
config: microblaze-allmodconfig (attached as .config)
compiler: microblaze-linux-gcc (GCC) 9.2.0
reproduce:
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=9.2.0 make.cross ARCH=microblaze
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
drivers/usb/gadget/function/f_mass_storage.c: In function 'do_read':
> drivers/usb/gadget/function/f_mass_storage.c:635:9: error:
implicit declaration of function 'get_unaligned_be24'; did you mean
'get_unaligned_be64'? [-Werror=implicit-function-declaration]
635 |
lba = get_unaligned_be24(&common->cmnd[1]);
| ^~~~~~~~~~~~~~~~~~
| get_unaligned_be64
cc1: some warnings being treated as errors
vim +635 drivers/usb/gadget/function/f_mass_storage.c
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
618
8ea864cffdfd32 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-11-09
619 static int do_read(struct fsg_common *common)
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
620 {
8ea864cffdfd32 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-11-09
621 struct fsg_lun *curlun = common->curlun;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
622 u32 lba;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
623 struct fsg_buffhd *bh;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
624 int rc;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
625 u32 amount_left;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
626 loff_t file_offset, file_offset_tmp;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
627 unsigned int amount;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
628 ssize_t nread;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
629
b73af61e328306 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2010-10-28
630 /*
b73af61e328306 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2010-10-28
631 * Get the starting Logical Block Address and check that it's
b73af61e328306 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2010-10-28
632 * not too big.
b73af61e328306 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2010-10-28
633 */
0a6a717ceff67f drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2010-10-07
634 if (common->cmnd[0] == READ_6)
8ea864cffdfd32 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-11-09
@635 lba = get_unaligned_be24(&common->cmnd[1]);
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
636 else {
8ea864cffdfd32 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-11-09
637 lba = get_unaligned_be32(&common->cmnd[2]);
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
638
b73af61e328306 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2010-10-28
639 /*
b73af61e328306 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2010-10-28
640 * We allow DPO (Disable Page Out = don't save data in the
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
641 * cache) and FUA (Force Unit Access = don't read from the
b73af61e328306 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2010-10-28
642 * cache), but we don't implement them.
b73af61e328306 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2010-10-28
643 */
8ea864cffdfd32 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-11-09
644 if ((common->cmnd[1] & ~0x18) != 0) {
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
645 curlun->sense_data = SS_INVALID_FIELD_IN_CDB;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
646 return -EINVAL;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
647 }
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
648 }
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
649 if (lba >= curlun->num_sectors) {
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
650 curlun->sense_data = SS_LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
651 return -EINVAL;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
652 }
3f565a363cee14 drivers/usb/gadget/f_mass_storage.c Peiyu Li 2011-08-17
653 file_offset = ((loff_t) lba) << curlun->blkbits;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
654
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
655 /* Carry out the file reads */
8ea864cffdfd32 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-11-09
656 amount_left = common->data_size_from_cmnd;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
657 if (unlikely(amount_left == 0))
d26a6aa08b9f12 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-11-09
658 return -EIO; /* No default reply */
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
659
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
660 for (;;) {
b73af61e328306 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2010-10-28
661 /*
b73af61e328306 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2010-10-28
662 * Figure out how much we need to read:
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
663 * Try to read the remaining amount.
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
664 * But don't read more than the buffer size.
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
665 * And don't try to read past the end of the file.
b73af61e328306 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2010-10-28
666 */
93bcf12e7123f2 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
667 amount = min(amount_left, FSG_BUFLEN);
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
668 amount = min((loff_t)amount,
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
669 curlun->file_length - file_offset);
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
670
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
671 /* Wait for the next buffer to become available */
8ea864cffdfd32 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-11-09
672 bh = common->next_buffhd_to_fill;
225785aec726f3 drivers/usb/gadget/function/f_mass_storage.c Alan Stern 2017-04-13
673 rc = sleep_thread(common, false, bh);
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
674 if (rc)
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
675 return rc;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
676
b73af61e328306 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2010-10-28
677 /*
b73af61e328306 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2010-10-28
678 * If we were asked to read past the end of file,
b73af61e328306 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2010-10-28
679 * end with an empty buffer.
b73af61e328306 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2010-10-28
680 */
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
681 if (amount == 0) {
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
682 curlun->sense_data =
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
683 SS_LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE;
3f565a363cee14 drivers/usb/gadget/f_mass_storage.c Peiyu Li 2011-08-17
684 curlun->sense_data_info =
3f565a363cee14 drivers/usb/gadget/f_mass_storage.c Peiyu Li 2011-08-17
685 file_offset >> curlun->blkbits;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
686 curlun->info_valid = 1;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
687 bh->inreq->length = 0;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
688 bh->state = BUF_STATE_FULL;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
689 break;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
690 }
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
691
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
692 /* Perform the read */
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
693 file_offset_tmp = file_offset;
05a4a33b6d82bc drivers/usb/gadget/function/f_mass_storage.c Christoph Hellwig 2017-09-01
694 nread = kernel_read(curlun->filp, bh->buf, amount,
05a4a33b6d82bc drivers/usb/gadget/function/f_mass_storage.c Christoph Hellwig 2017-09-01
695 &file_offset_tmp);
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
696 VLDBG(curlun, "file read %u @ %llu -> %d\n", amount,
b73af61e328306 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2010-10-28
697 (unsigned long long)file_offset, (int)nread);
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
698 if (signal_pending(current))
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
699 return -EINTR;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
700
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
701 if (nread < 0) {
b73af61e328306 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2010-10-28
702 LDBG(curlun, "error in file read: %d\n", (int)nread);
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
703 nread = 0;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
704 } else if (nread < amount) {
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
705 LDBG(curlun, "partial file read: %d/%u\n",
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
706 (int)nread, amount);
3f565a363cee14 drivers/usb/gadget/f_mass_storage.c Peiyu Li 2011-08-17
707 nread = round_down(nread, curlun->blksize);
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
708 }
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
709 file_offset += nread;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
710 amount_left -= nread;
8ea864cffdfd32 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-11-09
711 common->residue -= nread;
04eee25b1d754a drivers/usb/gadget/f_mass_storage.c Alan Stern 2011-08-18
712
04eee25b1d754a drivers/usb/gadget/f_mass_storage.c Alan Stern 2011-08-18
713 /*
04eee25b1d754a drivers/usb/gadget/f_mass_storage.c Alan Stern 2011-08-18
714 * Except at the end of the transfer, nread will be
04eee25b1d754a drivers/usb/gadget/f_mass_storage.c Alan Stern 2011-08-18
715 * equal to the buffer size, which is divisible by the
04eee25b1d754a drivers/usb/gadget/f_mass_storage.c Alan Stern 2011-08-18
716 * bulk-in maxpacket size.
04eee25b1d754a drivers/usb/gadget/f_mass_storage.c Alan Stern 2011-08-18
717 */
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
718 bh->inreq->length = nread;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
719 bh->state = BUF_STATE_FULL;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
720
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
721 /* If an error occurred, report it and its position */
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
722 if (nread < amount) {
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
723 curlun->sense_data = SS_UNRECOVERED_READ_ERROR;
3f565a363cee14 drivers/usb/gadget/f_mass_storage.c Peiyu Li 2011-08-17
724 curlun->sense_data_info =
3f565a363cee14 drivers/usb/gadget/f_mass_storage.c Peiyu Li 2011-08-17
725 file_offset >> curlun->blkbits;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
726 curlun->info_valid = 1;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
727 break;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
728 }
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
729
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
730 if (amount_left == 0)
d26a6aa08b9f12 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-11-09
731 break; /* No more left to read */
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
732
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
733 /* Send this buffer and go read some more */
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
734 bh->inreq->zero = 0;
fe52f7922c446b drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2010-10-28
735 if (!start_in_transfer(common, bh))
fe52f7922c446b drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2010-10-28
736 /* Don't know what to do if common->fsg is NULL */
8ea864cffdfd32 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-11-09
737 return -EIO;
8ea864cffdfd32 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-11-09
738 common->next_buffhd_to_fill = bh->next;
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
739 }
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
740
d26a6aa08b9f12 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-11-09
741 return -EIO; /* No default reply */
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
742 }
d5e2b67aae79f0 drivers/usb/gadget/f_mass_storage.c Michal Nazarewicz 2009-10-28
743
:::::: The code at line 635 was first introduced by commit
:::::: 8ea864cffdfd327117d4b7829935974b3f47ff31 USB: g_mass_storage: most data moved to
fsg_common
:::::: TO: Michal Nazarewicz <m.nazarewicz(a)samsung.com>
:::::: 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