Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi

Pull SCSI fixes from James Bottomley:
"Three small driver fixes and one larger unused function set removal in
the raid class (so no external impact)"

* tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
scsi: snic: Fix double free in snic_tgt_create()
scsi: core: raid_class: Remove raid_component_add()
scsi: ufs: ufs-qcom: Clear qunipro_g4_sel for HW major version > 5
scsi: ufs: mcq: Fix the search/wrap around logic

+6 -57
-48
drivers/scsi/raid_class.c
··· 209 209 raid_attr_ro_fn(resync); 210 210 raid_attr_ro_state_fn(state); 211 211 212 - static void raid_component_release(struct device *dev) 213 - { 214 - struct raid_component *rc = 215 - container_of(dev, struct raid_component, dev); 216 - dev_printk(KERN_ERR, rc->dev.parent, "COMPONENT RELEASE\n"); 217 - put_device(rc->dev.parent); 218 - kfree(rc); 219 - } 220 - 221 - int raid_component_add(struct raid_template *r,struct device *raid_dev, 222 - struct device *component_dev) 223 - { 224 - struct device *cdev = 225 - attribute_container_find_class_device(&r->raid_attrs.ac, 226 - raid_dev); 227 - struct raid_component *rc; 228 - struct raid_data *rd = dev_get_drvdata(cdev); 229 - int err; 230 - 231 - rc = kzalloc(sizeof(*rc), GFP_KERNEL); 232 - if (!rc) 233 - return -ENOMEM; 234 - 235 - INIT_LIST_HEAD(&rc->node); 236 - device_initialize(&rc->dev); 237 - rc->dev.release = raid_component_release; 238 - rc->dev.parent = get_device(component_dev); 239 - rc->num = rd->component_count++; 240 - 241 - dev_set_name(&rc->dev, "component-%d", rc->num); 242 - list_add_tail(&rc->node, &rd->component_list); 243 - rc->dev.class = &raid_class.class; 244 - err = device_add(&rc->dev); 245 - if (err) 246 - goto err_out; 247 - 248 - return 0; 249 - 250 - err_out: 251 - put_device(&rc->dev); 252 - list_del(&rc->node); 253 - rd->component_count--; 254 - put_device(component_dev); 255 - kfree(rc); 256 - return err; 257 - } 258 - EXPORT_SYMBOL(raid_component_add); 259 - 260 212 struct raid_template * 261 213 raid_class_attach(struct raid_function_template *ft) 262 214 {
+1 -2
drivers/scsi/snic/snic_disc.c
··· 303 303 "Snic Tgt: device_add, with err = %d\n", 304 304 ret); 305 305 306 - put_device(&tgt->dev); 307 306 put_device(&snic->shost->shost_gendev); 308 307 spin_lock_irqsave(snic->shost->host_lock, flags); 309 308 list_del(&tgt->list); 310 309 spin_unlock_irqrestore(snic->shost->host_lock, flags); 311 - kfree(tgt); 310 + put_device(&tgt->dev); 312 311 tgt = NULL; 313 312 314 313 return tgt;
+4 -2
drivers/ufs/core/ufs-mcq.c
··· 580 580 { 581 581 struct ufshcd_lrb *lrbp = &hba->lrb[task_tag]; 582 582 struct utp_transfer_req_desc *utrd; 583 - u32 mask = hwq->max_entries - 1; 584 583 __le64 cmd_desc_base_addr; 585 584 bool ret = false; 586 585 u64 addr, match; ··· 607 608 ret = true; 608 609 goto out; 609 610 } 610 - sq_head_slot = (sq_head_slot + 1) & mask; 611 + 612 + sq_head_slot++; 613 + if (sq_head_slot == hwq->max_entries) 614 + sq_head_slot = 0; 611 615 } 612 616 613 617 out:
+1 -1
drivers/ufs/host/ufs-qcom.c
··· 321 321 ufs_qcom_cap_qunipro(host) ? QUNIPRO_SEL : 0, 322 322 REG_UFS_CFG1); 323 323 324 - if (host->hw_ver.major == 0x05) 324 + if (host->hw_ver.major >= 0x05) 325 325 ufshcd_rmwl(host->hba, QUNIPRO_G4_SEL, 0, REG_UFS_CFG0); 326 326 327 327 /* make sure above configuration is applied before we return */
-4
include/linux/raid_class.h
··· 77 77 78 78 struct raid_template *raid_class_attach(struct raid_function_template *); 79 79 void raid_class_release(struct raid_template *); 80 - 81 - int __must_check raid_component_add(struct raid_template *, struct device *, 82 - struct device *); 83 -