On 2020-05-15 03:30, Avri Altman wrote: > +struct ufshpb_lun_config *ufshpb_luns_conf; > +struct ufshpb_lun *ufshpb_luns; > +static unsigned long ufshpb_lun_map[BITS_TO_LONGS(UFSHPB_MAX_LUNS)]; > +static u8 ufshpb_lun_lookup[UFSHPB_MAX_LUNS]; > + > +/** > + * ufshpb_remove - ufshpb cleanup > + * > + * Should be called when unloading the driver. > + */ > +void ufshpb_remove(struct ufs_hba *hba) > +{ > + kfree(ufshpb_conf); > + kfree(ufshpb_luns_conf); > + kfree(ufshpb_luns); > + ufshcd_query_flag(hba, UPIU_QUERY_OPCODE_SET_FLAG, > + QUERY_FLAG_IDN_HPB_RESET, 0, NULL); > +} > + > +static int ufshpb_hpb_init(void) > +{ > + u8 num_hpb_luns = ufshpb_conf->num_hpb_luns; > + int i; > + > + ufshpb_luns = kcalloc(num_hpb_luns, sizeof(*ufshpb_luns), GFP_KERNEL); > + if (!ufshpb_luns) > + return -ENOMEM; > + > + for (i = 0; i < num_hpb_luns; i++) { > + struct ufshpb_lun *hpb = ufshpb_luns + i; > + > + hpb->lun = (ufshpb_luns_conf + i)->lun; > + } > + > + return 0; > +} Do the ufshpb_lun... data structures perhaps duplicate SCSI core data structures? If so, please don't introduce duplicates of SCSI core data structures. Thanks, Bart.