Merge tag 'for-linus-20190524' of git://git.kernel.dk/linux-block
[linux-2.6-microblaze.git] / drivers / scsi / sd.c
index 2b2bc4b..c0f12ad 100644 (file)
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0-only
 /*
  *      sd.c Copyright (C) 1992 Drew Eckhardt
  *           Copyright (C) 1993, 1994, 1995, 1999 Eric Youngdale
@@ -2256,22 +2257,6 @@ static void read_capacity_error(struct scsi_disk *sdkp, struct scsi_device *sdp,
 
 #define READ_CAPACITY_RETRIES_ON_RESET 10
 
-/*
- * Ensure that we don't overflow sector_t when CONFIG_LBDAF is not set
- * and the reported logical block size is bigger than 512 bytes. Note
- * that last_sector is a u64 and therefore logical_to_sectors() is not
- * applicable.
- */
-static bool sd_addressable_capacity(u64 lba, unsigned int sector_size)
-{
-       u64 last_sector = (lba + 1ULL) << (ilog2(sector_size) - 9);
-
-       if (sizeof(sector_t) == 4 && last_sector > U32_MAX)
-               return false;
-
-       return true;
-}
-
 static int read_capacity_16(struct scsi_disk *sdkp, struct scsi_device *sdp,
                                                unsigned char *buffer)
 {
@@ -2337,14 +2322,6 @@ static int read_capacity_16(struct scsi_disk *sdkp, struct scsi_device *sdp,
                return -ENODEV;
        }
 
-       if (!sd_addressable_capacity(lba, sector_size)) {
-               sd_printk(KERN_ERR, sdkp, "Too big for this kernel. Use a "
-                       "kernel compiled with support for large block "
-                       "devices.\n");
-               sdkp->capacity = 0;
-               return -EOVERFLOW;
-       }
-
        /* Logical blocks per physical block exponent */
        sdkp->physical_block_size = (1 << (buffer[13] & 0xf)) * sector_size;
 
@@ -2426,14 +2403,6 @@ static int read_capacity_10(struct scsi_disk *sdkp, struct scsi_device *sdp,
                return sector_size;
        }
 
-       if (!sd_addressable_capacity(lba, sector_size)) {
-               sd_printk(KERN_ERR, sdkp, "Too big for this kernel. Use a "
-                       "kernel compiled with support for large block "
-                       "devices.\n");
-               sdkp->capacity = 0;
-               return -EOVERFLOW;
-       }
-
        sdkp->capacity = lba + 1;
        sdkp->physical_block_size = sector_size;
        return sector_size;
@@ -3325,6 +3294,7 @@ static void sd_probe_async(void *data, async_cookie_t cookie)
        if (sdp->removable) {
                gd->flags |= GENHD_FL_REMOVABLE;
                gd->events |= DISK_EVENT_MEDIA_CHANGE;
+               gd->event_flags = DISK_EVENT_FLAG_POLL | DISK_EVENT_FLAG_UEVENT;
        }
 
        blk_pm_runtime_init(sdp->request_queue, dev);