]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
usb: storage: add a macro for the upper limit of max LUN
authorDingyan Li <18500469033@163.com>
Wed, 30 Oct 2024 08:38:58 +0000 (16:38 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 4 Dec 2024 15:33:54 +0000 (16:33 +0100)
The meaning of this value is already used in several places,
but with constant values and comments to explain it separately.
It's better to have a central place to do this then use the macro
in those places for better readability.

Signed-off-by: Dingyan Li <18500469033@163.com>
Reviewed-by: Alan Stern <stern@rowland.harvard.edu>
Link: https://lore.kernel.org/r/20241030083858.46907-1-18500469033@163.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/gadget/function/f_tcm.c
drivers/usb/gadget/function/storage_common.h
drivers/usb/storage/transport.c
include/linux/usb/storage.h

index 15bb3aa12aa8b415ee2a35e1bc11b188596e9f50..e1914b20f816786ad83c439926f29c8c46dab677 100644 (file)
@@ -441,14 +441,10 @@ static int usbg_bot_setup(struct usb_function *f,
                        pr_err("No LUNs configured?\n");
                        return -EINVAL;
                }
-               /*
-                * If 4 LUNs are present we return 3 i.e. LUN 0..3 can be
-                * accessed. The upper limit is 0xf
-                */
                luns--;
-               if (luns > 0xf) {
+               if (luns > US_BULK_MAX_LUN_LIMIT) {
                        pr_info_once("Limiting the number of luns to 16\n");
-                       luns = 0xf;
+                       luns = US_BULK_MAX_LUN_LIMIT;
                }
                ret_lun = cdev->req->buf;
                *ret_lun = luns;
index ced5d2b09234dc09bd0cc0b873379d3c9c1cdbf2..11ac785d5eee2682b2aed0afb28b315dd0d87c04 100644 (file)
@@ -131,7 +131,7 @@ static inline bool fsg_lun_is_open(struct fsg_lun *curlun)
 #define FSG_BUFLEN     ((u32)16384)
 
 /* Maximal number of LUNs supported in mass storage function */
-#define FSG_MAX_LUNS   16
+#define FSG_MAX_LUNS   (US_BULK_MAX_LUN_LIMIT + 1)
 
 enum fsg_buffer_state {
        BUF_STATE_SENDING = -2,
index 9d767f6bf7225f830a71267c94c09f0b4d392bfa..e6bc8ecaecbb202714be69c6db6b0a4824de4855 100644 (file)
@@ -1087,13 +1087,9 @@ int usb_stor_Bulk_max_lun(struct us_data *us)
        usb_stor_dbg(us, "GetMaxLUN command result is %d, data is %d\n",
                     result, us->iobuf[0]);
 
-       /*
-        * If we have a successful request, return the result if valid. The
-        * CBW LUN field is 4 bits wide, so the value reported by the device
-        * should fit into that.
-        */
+       /* If we have a successful request, return the result if valid. */
        if (result > 0) {
-               if (us->iobuf[0] < 16) {
+               if (us->iobuf[0] <= US_BULK_MAX_LUN_LIMIT) {
                        return us->iobuf[0];
                } else {
                        dev_info(&us->pusb_intf->dev,
index 8539956bc2be1c81ffa0b5919017b1d1521a5e56..51be3bb8fccb2e5b649bac39f062d4734c3be704 100644 (file)
@@ -82,4 +82,12 @@ struct bulk_cs_wrap {
 #define US_BULK_RESET_REQUEST   0xff
 #define US_BULK_GET_MAX_LUN     0xfe
 
+/*
+ * If 4 LUNs are supported then the LUNs would be
+ * numbered from 0 to 3, and the return value for
+ * US_BULK_GET_MAX_LUN request would be 3. The valid
+ * LUN field is 4 bits wide, the upper limit is 0x0f.
+ */
+#define US_BULK_MAX_LUN_LIMIT   0x0f
+
 #endif