With the new standardized functions, we can replace all ACCESS_ONCE()
calls across relevant drivers/usb/.

ACCESS_ONCE() does not work reliably on non-scalar types. For example
gcc 4.6 and 4.7 might remove the volatile tag for such accesses during
the SRA (scalar replacement of aggregates) step:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58145

Update the new calls regardless of if it is a scalar type, this is
cleaner than having three alternatives.

Signed-off-by: Davidlohr Bueso <dbu...@suse.de>
---
 drivers/usb/class/cdc-wdm.c     | 2 +-
 drivers/usb/core/devio.c        | 2 +-
 drivers/usb/core/sysfs.c        | 4 ++--
 drivers/usb/gadget/udc/gr_udc.c | 4 ++--
 drivers/usb/host/ohci-hcd.c     | 2 +-
 drivers/usb/host/uhci-hcd.h     | 4 ++--
 6 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
index 0a6369510f2d..d31ae7d1c2ac 100644
--- a/drivers/usb/class/cdc-wdm.c
+++ b/drivers/usb/class/cdc-wdm.c
@@ -515,7 +515,7 @@ static ssize_t wdm_read
        if (rv < 0)
                return -ERESTARTSYS;
 
-       cntr = ACCESS_ONCE(desc->length);
+       cntr = READ_ONCE(desc->length);
        if (cntr == 0) {
                desc->read = 0;
 retry:
diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
index 4016dae7433b..ffd4389fb2e2 100644
--- a/drivers/usb/core/devio.c
+++ b/drivers/usb/core/devio.c
@@ -153,7 +153,7 @@ static int usbfs_increase_memory_usage(unsigned amount)
         * Convert usbfs_memory_mb to bytes, avoiding overflows.
         * 0 means use the hard limit (effectively unlimited).
         */
-       lim = ACCESS_ONCE(usbfs_memory_mb);
+       lim = READ_ONCE(usbfs_memory_mb);
        if (lim == 0 || lim > (USBFS_XFER_MAX >> 20))
                lim = USBFS_XFER_MAX;
        else
diff --git a/drivers/usb/core/sysfs.c b/drivers/usb/core/sysfs.c
index c953a0f1c695..048eece1884f 100644
--- a/drivers/usb/core/sysfs.c
+++ b/drivers/usb/core/sysfs.c
@@ -956,7 +956,7 @@ static ssize_t interface_show(struct device *dev, struct 
device_attribute *attr,
        char *string;
 
        intf = to_usb_interface(dev);
-       string = ACCESS_ONCE(intf->cur_altsetting->string);
+       string = READ_ONCE(intf->cur_altsetting->string);
        if (!string)
                return 0;
        return sprintf(buf, "%s\n", string);
@@ -972,7 +972,7 @@ static ssize_t modalias_show(struct device *dev, struct 
device_attribute *attr,
 
        intf = to_usb_interface(dev);
        udev = interface_to_usbdev(intf);
-       alt = ACCESS_ONCE(intf->cur_altsetting);
+       alt = READ_ONCE(intf->cur_altsetting);
 
        return sprintf(buf, "usb:v%04Xp%04Xd%04Xdc%02Xdsc%02Xdp%02X"
                        "ic%02Xisc%02Xip%02Xin%02X\n",
diff --git a/drivers/usb/gadget/udc/gr_udc.c b/drivers/usb/gadget/udc/gr_udc.c
index 39b7136d31d9..2af6e8a98224 100644
--- a/drivers/usb/gadget/udc/gr_udc.c
+++ b/drivers/usb/gadget/udc/gr_udc.c
@@ -1261,7 +1261,7 @@ static int gr_handle_in_ep(struct gr_ep *ep)
        if (!req->last_desc)
                return 0;
 
-       if (ACCESS_ONCE(req->last_desc->ctrl) & GR_DESC_IN_CTRL_EN)
+       if (READ_ONCE(req->last_desc->ctrl) & GR_DESC_IN_CTRL_EN)
                return 0; /* Not put in hardware buffers yet */
 
        if (gr_read32(&ep->regs->epstat) & (GR_EPSTAT_B1 | GR_EPSTAT_B0))
@@ -1290,7 +1290,7 @@ static int gr_handle_out_ep(struct gr_ep *ep)
        if (!req->curr_desc)
                return 0;
 
-       ctrl = ACCESS_ONCE(req->curr_desc->ctrl);
+       ctrl = READ_ONCE(req->curr_desc->ctrl);
        if (ctrl & GR_DESC_OUT_CTRL_EN)
                return 0; /* Not received yet */
 
diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
index 86612ac3fda2..cf9ac6e3d157 100644
--- a/drivers/usb/host/ohci-hcd.c
+++ b/drivers/usb/host/ohci-hcd.c
@@ -784,7 +784,7 @@ static void io_watchdog_func(unsigned long _ohci)
                }
 
                /* find the last TD processed by the controller. */
-               head = hc32_to_cpu(ohci, ACCESS_ONCE(ed->hwHeadP)) & TD_MASK;
+               head = hc32_to_cpu(ohci, READ_ONCE(ed->hwHeadP)) & TD_MASK;
                td_start = td;
                td_next = list_prepare_entry(td, &ed->td_list, td_list);
                list_for_each_entry_continue(td_next, &ed->td_list, td_list) {
diff --git a/drivers/usb/host/uhci-hcd.h b/drivers/usb/host/uhci-hcd.h
index 6f986d82472d..033a2b46a46e 100644
--- a/drivers/usb/host/uhci-hcd.h
+++ b/drivers/usb/host/uhci-hcd.h
@@ -184,7 +184,7 @@ struct uhci_qh {
  * We need a special accessor for the element pointer because it is
  * subject to asynchronous updates by the controller.
  */
-#define qh_element(qh)         ACCESS_ONCE((qh)->element)
+#define qh_element(qh)         READ_ONCE((qh)->element)
 
 #define LINK_TO_QH(uhci, qh)   (UHCI_PTR_QH((uhci)) | \
                                cpu_to_hc32((uhci), (qh)->dma_handle))
@@ -272,7 +272,7 @@ struct uhci_td {
  * subject to asynchronous updates by the controller.
  */
 #define td_status(uhci, td)            hc32_to_cpu((uhci), \
-                                               ACCESS_ONCE((td)->status))
+                                               READ_ONCE((td)->status))
 
 #define LINK_TO_TD(uhci, td)           (cpu_to_hc32((uhci), (td)->dma_handle))
 
-- 
2.6.6

Reply via email to