> On Wed, May 07, 2025 at 02:14:00PM +0300, Elena Reshetova wrote: > > > diff --git a/arch/x86/kernel/cpu/sgx/driver.c > b/arch/x86/kernel/cpu/sgx/driver.c > > index 7f8d1e11dbee..669e44d61f9f 100644 > > --- a/arch/x86/kernel/cpu/sgx/driver.c > > +++ b/arch/x86/kernel/cpu/sgx/driver.c > > @@ -19,6 +19,10 @@ static int sgx_open(struct inode *inode, struct file > *file) > > struct sgx_encl *encl; > > int ret; > > > > + ret = sgx_inc_usage_count(); > > + if (ret) > > + return ret; > > + > > encl = kzalloc(sizeof(*encl), GFP_KERNEL); > > if (!encl) > > return -ENOMEM; > > The rollback looks broken to me. > > Let's clean up error handling a bit: > > encl = kzalloc(sizeof(*encl), GFP_KERNEL); > if (!encl) { > ret = -ENOMEM; > goto err_usage_count; > } > > And later on in the same function: > > ret = init_srcu_struct(&encl->srcu); > if (ret) > goto err_encl; > > And finally tail: > > return 0; > > err_encl: > kfree(encl); > > err_usage_count: > sgx_dec_usage_count(); > return ret; > }
Yes, thank you for catching this! Will fix. Best Regards, Elena.