diff options
author | Alan Stern <stern@rowland.harvard.edu> | 2005-07-29 16:11:07 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2005-09-08 19:23:04 -0400 |
commit | b375a0495fd622037560c73c05f23ae6f127bb0c (patch) | |
tree | 7f800cfd288480625e6e9886b51aa6d159a1548e /drivers/block | |
parent | a4e628328ec60873fec9d506d682155391f589ce (diff) |
[PATCH] USB: URB_ASYNC_UNLINK flag removed from the kernel
29 July 2005, Cambridge, MA:
This afternoon Alan Stern submitted a patch to remove the URB_ASYNC_UNLINK
flag from the Linux kernel. Mr. Stern explained, "This flag is a relic
from an earlier, less-well-designed system. For over a year it hasn't
been used for anything other than printing warning messages."
An anonymous spokesman for the Linux kernel development community
commented, "This is exactly the sort of thing we see happening all the
time. As the kernel evolves, support for old techniques and old code can
be jettisoned and replaced by newer, better approaches. Proprietary
operating systems do not have the freedom or flexibility to change so
quickly."
Mr. Stern, a staff member at Harvard University's Rowland Institute who
works on Linux only as a hobby, noted that the patch (labelled as548) did
not update two files, keyspan.c and option.c, in the USB drivers' "serial"
subdirectory. "Those files need more extensive changes," he remarked.
"They examine the status field of several URBs at times when they're not
supposed to. That will need to be fixed before the URB_ASYNC_UNLINK flag
is removed."
Greg Kroah-Hartman, the kernel maintainer responsible for overseeing all
of Linux's USB drivers, did not respond to our inquiries or return our
calls. His only comment was "Applied, thanks."
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/block')
-rw-r--r-- | drivers/block/ub.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/block/ub.c b/drivers/block/ub.c index 57d3279a8815..aa0bf7ee008d 100644 --- a/drivers/block/ub.c +++ b/drivers/block/ub.c | |||
@@ -1010,7 +1010,7 @@ static int ub_scsi_cmd_start(struct ub_dev *sc, struct ub_scsi_cmd *cmd) | |||
1010 | sc->last_pipe = sc->send_bulk_pipe; | 1010 | sc->last_pipe = sc->send_bulk_pipe; |
1011 | usb_fill_bulk_urb(&sc->work_urb, sc->dev, sc->send_bulk_pipe, | 1011 | usb_fill_bulk_urb(&sc->work_urb, sc->dev, sc->send_bulk_pipe, |
1012 | bcb, US_BULK_CB_WRAP_LEN, ub_urb_complete, sc); | 1012 | bcb, US_BULK_CB_WRAP_LEN, ub_urb_complete, sc); |
1013 | sc->work_urb.transfer_flags = URB_ASYNC_UNLINK; | 1013 | sc->work_urb.transfer_flags = 0; |
1014 | 1014 | ||
1015 | /* Fill what we shouldn't be filling, because usb-storage did so. */ | 1015 | /* Fill what we shouldn't be filling, because usb-storage did so. */ |
1016 | sc->work_urb.actual_length = 0; | 1016 | sc->work_urb.actual_length = 0; |
@@ -1395,7 +1395,7 @@ static void ub_data_start(struct ub_dev *sc, struct ub_scsi_cmd *cmd) | |||
1395 | usb_fill_bulk_urb(&sc->work_urb, sc->dev, pipe, | 1395 | usb_fill_bulk_urb(&sc->work_urb, sc->dev, pipe, |
1396 | page_address(sg->page) + sg->offset, sg->length, | 1396 | page_address(sg->page) + sg->offset, sg->length, |
1397 | ub_urb_complete, sc); | 1397 | ub_urb_complete, sc); |
1398 | sc->work_urb.transfer_flags = URB_ASYNC_UNLINK; | 1398 | sc->work_urb.transfer_flags = 0; |
1399 | sc->work_urb.actual_length = 0; | 1399 | sc->work_urb.actual_length = 0; |
1400 | sc->work_urb.error_count = 0; | 1400 | sc->work_urb.error_count = 0; |
1401 | sc->work_urb.status = 0; | 1401 | sc->work_urb.status = 0; |
@@ -1442,7 +1442,7 @@ static int __ub_state_stat(struct ub_dev *sc, struct ub_scsi_cmd *cmd) | |||
1442 | sc->last_pipe = sc->recv_bulk_pipe; | 1442 | sc->last_pipe = sc->recv_bulk_pipe; |
1443 | usb_fill_bulk_urb(&sc->work_urb, sc->dev, sc->recv_bulk_pipe, | 1443 | usb_fill_bulk_urb(&sc->work_urb, sc->dev, sc->recv_bulk_pipe, |
1444 | &sc->work_bcs, US_BULK_CS_WRAP_LEN, ub_urb_complete, sc); | 1444 | &sc->work_bcs, US_BULK_CS_WRAP_LEN, ub_urb_complete, sc); |
1445 | sc->work_urb.transfer_flags = URB_ASYNC_UNLINK; | 1445 | sc->work_urb.transfer_flags = 0; |
1446 | sc->work_urb.actual_length = 0; | 1446 | sc->work_urb.actual_length = 0; |
1447 | sc->work_urb.error_count = 0; | 1447 | sc->work_urb.error_count = 0; |
1448 | sc->work_urb.status = 0; | 1448 | sc->work_urb.status = 0; |
@@ -1563,7 +1563,7 @@ static int ub_submit_clear_stall(struct ub_dev *sc, struct ub_scsi_cmd *cmd, | |||
1563 | 1563 | ||
1564 | usb_fill_control_urb(&sc->work_urb, sc->dev, sc->send_ctrl_pipe, | 1564 | usb_fill_control_urb(&sc->work_urb, sc->dev, sc->send_ctrl_pipe, |
1565 | (unsigned char*) cr, NULL, 0, ub_urb_complete, sc); | 1565 | (unsigned char*) cr, NULL, 0, ub_urb_complete, sc); |
1566 | sc->work_urb.transfer_flags = URB_ASYNC_UNLINK; | 1566 | sc->work_urb.transfer_flags = 0; |
1567 | sc->work_urb.actual_length = 0; | 1567 | sc->work_urb.actual_length = 0; |
1568 | sc->work_urb.error_count = 0; | 1568 | sc->work_urb.error_count = 0; |
1569 | sc->work_urb.status = 0; | 1569 | sc->work_urb.status = 0; |