.. | .. |
---|
23 | 23 | MODULE_DESCRIPTION("Driver for Rio Karma"); |
---|
24 | 24 | MODULE_AUTHOR("Bob Copeland <me@bobcopeland.com>, Keith Bennett <keith@mcs.st-and.ac.uk>"); |
---|
25 | 25 | MODULE_LICENSE("GPL"); |
---|
| 26 | +MODULE_IMPORT_NS(USB_STORAGE); |
---|
26 | 27 | |
---|
27 | 28 | #define RIO_PREFIX "RIOP\x00" |
---|
28 | 29 | #define RIO_PREFIX_LEN 5 |
---|
.. | .. |
---|
167 | 168 | static void rio_karma_destructor(void *extra) |
---|
168 | 169 | { |
---|
169 | 170 | struct karma_data *data = (struct karma_data *) extra; |
---|
| 171 | + |
---|
170 | 172 | kfree(data->recv); |
---|
171 | 173 | } |
---|
172 | 174 | |
---|
173 | 175 | static int rio_karma_init(struct us_data *us) |
---|
174 | 176 | { |
---|
175 | | - int ret = 0; |
---|
176 | 177 | struct karma_data *data = kzalloc(sizeof(struct karma_data), GFP_NOIO); |
---|
| 178 | + |
---|
177 | 179 | if (!data) |
---|
178 | | - goto out; |
---|
| 180 | + return -ENOMEM; |
---|
179 | 181 | |
---|
180 | 182 | data->recv = kmalloc(RIO_RECV_LEN, GFP_NOIO); |
---|
181 | 183 | if (!data->recv) { |
---|
182 | 184 | kfree(data); |
---|
183 | | - goto out; |
---|
| 185 | + return -ENOMEM; |
---|
184 | 186 | } |
---|
185 | 187 | |
---|
186 | 188 | us->extra = data; |
---|
187 | 189 | us->extra_destructor = rio_karma_destructor; |
---|
188 | | - ret = rio_karma_send_command(RIO_ENTER_STORAGE, us); |
---|
189 | | - data->in_storage = (ret == 0); |
---|
190 | | -out: |
---|
191 | | - return ret; |
---|
| 190 | + if (rio_karma_send_command(RIO_ENTER_STORAGE, us)) |
---|
| 191 | + return -EIO; |
---|
| 192 | + |
---|
| 193 | + data->in_storage = 1; |
---|
| 194 | + |
---|
| 195 | + return 0; |
---|
192 | 196 | } |
---|
193 | 197 | |
---|
194 | 198 | static struct scsi_host_template karma_host_template; |
---|