From: Przemyslaw Marczak Date: Wed, 23 Oct 2013 12:30:44 +0000 (+0200) Subject: usb: ums: fix disk capacity miscalculation and code cleanup X-Git-Tag: submit/tizen/20160318.071304~274 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d66b6f0f60d21368d36a4ec6baaf6a50ea0bf30e;p=profile%2Fcommon%2Fplatform%2Fkernel%2Fu-boot-artik.git usb: ums: fix disk capacity miscalculation and code cleanup This patch prevents: - ums disk capacity miscalculation because of integer overflow Changes v2: - Prevents passing zero size disk capacity to ums gadget driver - Change function ums_get_capacity() to ums_disk_init() and do ums disk initialization before gadget init - Remove unnecessary code from mass storage driver Signed-off-by: Przemyslaw Marczak Cc: Marek Vasut Signed-off-by: Chanho Park Conflicts: board/samsung/trats/trats.c --- diff --git a/drivers/usb/gadget/storage_common.c b/drivers/usb/gadget/storage_common.c index 8208e4dba..42ba13377 100644 --- a/drivers/usb/gadget/storage_common.c +++ b/drivers/usb/gadget/storage_common.c @@ -584,36 +584,16 @@ static struct usb_gadget_strings fsg_stringtab = { static int fsg_lun_open(struct fsg_lun *curlun, const char *filename) { int ro; - int rc = -EINVAL; - loff_t size; - loff_t num_sectors; - loff_t min_sectors; /* R/W if we can, R/O if we must */ ro = curlun->initially_ro; - ums->get_capacity(ums, &size); - if (size < 0) { - printf("unable to find file size: %s\n", filename); - rc = (int) size; - goto out; - } - num_sectors = size >> 9; /* File size in 512-byte blocks */ - min_sectors = 1; - if (num_sectors < min_sectors) { - printf("file too small: %s\n", filename); - rc = -ETOOSMALL; - goto out; - } - curlun->ro = ro; - curlun->file_length = size; - curlun->num_sectors = num_sectors; + curlun->file_length = ums->num_sectors << 9; + curlun->num_sectors = ums->num_sectors; debug("open backing file: %s\n", filename); - rc = 0; -out: - return rc; + return 0; } static void fsg_lun_close(struct fsg_lun *curlun) diff --git a/include/usb_mass_storage.h b/include/usb_mass_storage.h index 321dad344..3ba90bb68 100644 --- a/include/usb_mass_storage.h +++ b/include/usb_mass_storage.h @@ -38,12 +38,10 @@ struct ums { ulong start, lbaint_t blkcnt, void *buf); int (*write_sector)(struct ums *ums_dev, ulong start, lbaint_t blkcnt, const void *buf); - void (*get_capacity)(struct ums *ums_dev, - long long int *capacity); + unsigned int start_sector; + unsigned int num_sectors; const char *name; struct mmc *mmc; - int offset; - int part_size; }; extern struct ums *ums;