Hi Babu, On 8/30/2023 9:38 AM, Moger, Babu wrote: > On 8/29/23 15:10, Reinette Chatre wrote: >> On 8/21/2023 4:30 PM, Babu Moger wrote: >>> static int rdt_enable_ctx(struct rdt_fs_context *ctx) >>> { >>> int ret = 0; >>> >>> - if (ctx->enable_cdpl2) >>> + if (ctx->enable_cdpl2) { >>> ret = resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L2, true); >>> + if (ret) >>> + goto out_done; >>> + } >>> >>> - if (!ret && ctx->enable_cdpl3) >>> + if (ctx->enable_cdpl3) { >>> ret = resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L3, true); >>> + if (ret) >>> + goto out_cdpl2; >>> + } >>> >>> - if (!ret && ctx->enable_mba_mbps) >>> + if (ctx->enable_mba_mbps) { >>> ret = set_mba_sc(true); >>> + if (ret) >>> + goto out_cdpl3; >> >> An error may be encountered here without CDP ever enabled or just >> enabled for L2 or L3. I think that the error unwinding should >> take care to not unwind an action that was not done. Considering >> the information available I think checking either ctx->enable_... >> or the checks used in rdt_disable_ctx() would be ok but for consistency >> the resctrl_arch_get_cdp_enabled() checks may be most appropriate. >> >>> + } >>> + >>> + return 0; >>> >>> +out_cdpl3: >> >> So here I think there should be a check. >> if (resctrl_arch_get_cdp_enabled(RDT_RESOURCE_L3)) >> >>> + resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L3, false); >>> +out_cdpl2: >> >> ... and here a check: >> if (resctrl_arch_get_cdp_enabled(RDT_RESOURCE_L2)) > > > I know it does not hurt to add these checks. But, it may be unnecessary > considering cdp_disable() has the check "if (r_hw->cdp_enabled)" already. > Both are same checks. What do you think? Yes, good point. Thank you for checking. Considering this it looks like rdt_disable_ctx() can be simplified also by removing those CDP enabled checks from it? Also looks like rdt_disable_ctx()-> set_mba_sc(false) can be called unconditionally. Reinette