Re: [PATCH] floppy: reintroduce O_NDELAY fix

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Jiri,

I love your patch! Yet something to improve:

[auto build test ERROR on block/for-next]
[also build test ERROR on linux/master linus/master v5.11-rc4 next-20210121]
[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/Jiri-Kosina/floppy-reintroduce-O_NDELAY-fix/20210121-182951
base:   https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git for-next
config: sparc64-randconfig-r033-20210121 (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://github.com/0day-ci/linux/commit/605da67173ab7c362845b2f74c2914bfcec6db2e
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Jiri-Kosina/floppy-reintroduce-O_NDELAY-fix/20210121-182951
        git checkout 605da67173ab7c362845b2f74c2914bfcec6db2e
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=sparc64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All errors (new ones prefixed by >>):

   In file included from arch/sparc/include/asm/floppy.h:5,
                    from drivers/block/floppy.c:251:
   arch/sparc/include/asm/floppy_64.h:200:13: warning: no previous prototype for 'sparc_floppy_irq' [-Wmissing-prototypes]
     200 | irqreturn_t sparc_floppy_irq(int irq, void *dev_cookie)
         |             ^~~~~~~~~~~~~~~~
   In file included from arch/sparc/include/asm/floppy.h:5,
                    from drivers/block/floppy.c:251:
   arch/sparc/include/asm/floppy_64.h:437:6: warning: no previous prototype for 'sun_pci_fd_dma_callback' [-Wmissing-prototypes]
     437 | void sun_pci_fd_dma_callback(struct ebus_dma_info *p, int event, void *cookie)
         |      ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/block/floppy.c: In function 'floppy_open':
>> drivers/block/floppy.c:4125:3: error: 'UDRS' undeclared (first use in this function)
    4125 |   UDRS->last_checked = 0;
         |   ^~~~
   drivers/block/floppy.c:4125:3: note: each undeclared identifier is reported only once for each function it appears in
>> drivers/block/floppy.c:4127:3: error: implicit declaration of function 'check_disk_change'; did you mean 'bdev_disk_changed'? [-Werror=implicit-function-declaration]
    4127 |   check_disk_change(bdev);
         |   ^~~~~~~~~~~~~~~~~
         |   bdev_disk_changed
   cc1: some warnings being treated as errors

Kconfig warnings: (for reference only)
   WARNING: unmet direct dependencies detected for COMPAT_BINFMT_ELF
   Depends on COMPAT && BINFMT_ELF
   Selected by
   - COMPAT && SPARC64
   WARNING: unmet direct dependencies detected for FRAME_POINTER
   Depends on DEBUG_KERNEL && (M68K || UML || SUPERH) || ARCH_WANT_FRAME_POINTERS || MCOUNT
   Selected by
   - LOCKDEP && DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT && !MIPS && !PPC && !ARM && !S390 && !MICROBLAZE && !ARC && !X86


vim +/UDRS +4125 drivers/block/floppy.c

  4052	
  4053	/*
  4054	 * floppy_open check for aliasing (/dev/fd0 can be the same as
  4055	 * /dev/PS0 etc), and disallows simultaneous access to the same
  4056	 * drive with different device numbers.
  4057	 */
  4058	static int floppy_open(struct block_device *bdev, fmode_t mode)
  4059	{
  4060		int drive = (long)bdev->bd_disk->private_data;
  4061		int old_dev, new_dev;
  4062		int try;
  4063		int res = -EBUSY;
  4064		char *tmp;
  4065	
  4066		mutex_lock(&floppy_mutex);
  4067		mutex_lock(&open_lock);
  4068		old_dev = drive_state[drive].fd_device;
  4069		if (opened_bdev[drive] && opened_bdev[drive] != bdev)
  4070			goto out2;
  4071	
  4072		if (!drive_state[drive].fd_ref && (drive_params[drive].flags & FD_BROKEN_DCL)) {
  4073			set_bit(FD_DISK_CHANGED_BIT, &drive_state[drive].flags);
  4074			set_bit(FD_VERIFY_BIT, &drive_state[drive].flags);
  4075		}
  4076	
  4077		drive_state[drive].fd_ref++;
  4078	
  4079		opened_bdev[drive] = bdev;
  4080	
  4081		res = -ENXIO;
  4082	
  4083		if (!floppy_track_buffer) {
  4084			/* if opening an ED drive, reserve a big buffer,
  4085			 * else reserve a small one */
  4086			if ((drive_params[drive].cmos == 6) || (drive_params[drive].cmos == 5))
  4087				try = 64;	/* Only 48 actually useful */
  4088			else
  4089				try = 32;	/* Only 24 actually useful */
  4090	
  4091			tmp = (char *)fd_dma_mem_alloc(1024 * try);
  4092			if (!tmp && !floppy_track_buffer) {
  4093				try >>= 1;	/* buffer only one side */
  4094				INFBOUND(try, 16);
  4095				tmp = (char *)fd_dma_mem_alloc(1024 * try);
  4096			}
  4097			if (!tmp && !floppy_track_buffer)
  4098				fallback_on_nodma_alloc(&tmp, 2048 * try);
  4099			if (!tmp && !floppy_track_buffer) {
  4100				DPRINT("Unable to allocate DMA memory\n");
  4101				goto out;
  4102			}
  4103			if (floppy_track_buffer) {
  4104				if (tmp)
  4105					fd_dma_mem_free((unsigned long)tmp, try * 1024);
  4106			} else {
  4107				buffer_min = buffer_max = -1;
  4108				floppy_track_buffer = tmp;
  4109				max_buffer_sectors = try;
  4110			}
  4111		}
  4112	
  4113		new_dev = MINOR(bdev->bd_dev);
  4114		drive_state[drive].fd_device = new_dev;
  4115		set_capacity(disks[drive][ITYPE(new_dev)], floppy_sizes[new_dev]);
  4116		if (old_dev != -1 && old_dev != new_dev) {
  4117			if (buffer_drive == drive)
  4118				buffer_track = -1;
  4119		}
  4120	
  4121		if (fdc_state[FDC(drive)].rawcmd == 1)
  4122			fdc_state[FDC(drive)].rawcmd = 2;
  4123	
  4124		if (mode & (FMODE_READ|FMODE_WRITE)) {
> 4125			UDRS->last_checked = 0;
  4126			clear_bit(FD_OPEN_SHOULD_FAIL_BIT, &drive_state[drive].flags);
> 4127			check_disk_change(bdev);
  4128			if (test_bit(FD_DISK_CHANGED_BIT, &drive_state[drive].flags))
  4129				goto out;
  4130			if (test_bit(FD_OPEN_SHOULD_FAIL_BIT, &drive_state[drive].flags))
  4131				goto out;
  4132		}
  4133	
  4134		res = -EROFS;
  4135	
  4136		if ((mode & FMODE_WRITE) &&
  4137				!test_bit(FD_DISK_WRITABLE_BIT, &drive_state[drive].flags))
  4138			goto out;
  4139	
  4140		mutex_unlock(&open_lock);
  4141		mutex_unlock(&floppy_mutex);
  4142		return 0;
  4143	out:
  4144		drive_state[drive].fd_ref--;
  4145	
  4146		if (!drive_state[drive].fd_ref)
  4147			opened_bdev[drive] = NULL;
  4148	out2:
  4149		mutex_unlock(&open_lock);
  4150		mutex_unlock(&floppy_mutex);
  4151		return res;
  4152	}
  4153	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux