forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-13 9d77db3c730780c8ef5ccd4b66403ff5675cfe4e
kernel/drivers/usb/storage/karma.c
....@@ -23,6 +23,7 @@
2323 MODULE_DESCRIPTION("Driver for Rio Karma");
2424 MODULE_AUTHOR("Bob Copeland <me@bobcopeland.com>, Keith Bennett <keith@mcs.st-and.ac.uk>");
2525 MODULE_LICENSE("GPL");
26
+MODULE_IMPORT_NS(USB_STORAGE);
2627
2728 #define RIO_PREFIX "RIOP\x00"
2829 #define RIO_PREFIX_LEN 5
....@@ -167,28 +168,31 @@
167168 static void rio_karma_destructor(void *extra)
168169 {
169170 struct karma_data *data = (struct karma_data *) extra;
171
+
170172 kfree(data->recv);
171173 }
172174
173175 static int rio_karma_init(struct us_data *us)
174176 {
175
- int ret = 0;
176177 struct karma_data *data = kzalloc(sizeof(struct karma_data), GFP_NOIO);
178
+
177179 if (!data)
178
- goto out;
180
+ return -ENOMEM;
179181
180182 data->recv = kmalloc(RIO_RECV_LEN, GFP_NOIO);
181183 if (!data->recv) {
182184 kfree(data);
183
- goto out;
185
+ return -ENOMEM;
184186 }
185187
186188 us->extra = data;
187189 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;
192196 }
193197
194198 static struct scsi_host_template karma_host_template;