Patch "crypto: qat - add sysfs_added flag for ras" has been added to the 6.7-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    crypto: qat - add sysfs_added flag for ras

to the 6.7-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     crypto-qat-add-sysfs_added-flag-for-ras.patch
and it can be found in the queue-6.7 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 7bcbc82c31ecce1599d08c5d22bc09e701ae6ef1
Author: Damian Muszynski <damian.muszynski@xxxxxxxxx>
Date:   Tue Nov 21 17:59:45 2023 +0100

    crypto: qat - add sysfs_added flag for ras
    
    [ Upstream commit 65089000ba8c2ae713ccac6603319143f3e1c08b ]
    
    The qat_ras sysfs attribute group is registered within the
    adf_dev_start() function, alongside other driver components.
    If any of the functions preceding the group registration fails,
    the adf_dev_start() function returns, and the caller, to undo the
    operation, invokes adf_dev_stop() followed by adf_dev_shutdown().
    However, the current flow lacks information about whether the
    registration of the qat_ras attribute group was successful or not.
    
    In cases where this condition is encountered, an error similar to
    the following might be reported:
    
        4xxx 0000:6b:00.0: Starting device qat_dev0
        4xxx 0000:6b:00.0: qat_dev0 started 9 acceleration engines
        4xxx 0000:6b:00.0: Failed to send init message
        4xxx 0000:6b:00.0: Failed to start device qat_dev0
        sysfs group 'qat_ras' not found for kobject '0000:6b:00.0'
        ...
        sysfs_remove_groups+0x29/0x50
        adf_sysfs_stop_ras+0x4b/0x80 [intel_qat]
        adf_dev_stop+0x43/0x1d0 [intel_qat]
        adf_dev_down+0x4b/0x150 [intel_qat]
        ...
        4xxx 0000:6b:00.0: qat_dev0 stopped 9 acceleration engines
        4xxx 0000:6b:00.0: Resetting device qat_dev0
    
    To prevent attempting to remove attributes from a group that has not
    been added yet, a flag named 'sysfs_added' is introduced. This flag
    is set to true upon the successful registration of the attribute group.
    
    Fixes: 532d7f6bc458 ("crypto: qat - add error counters")
    Signed-off-by: Damian Muszynski <damian.muszynski@xxxxxxxxx>
    Reviewed-by: Giovanni Cabiddu <giovanni.cabiddu@xxxxxxxxx>
    Reviewed-by: Ahsan Atta <ahsan.atta@xxxxxxxxx>
    Signed-off-by: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/crypto/intel/qat/qat_common/adf_accel_devices.h b/drivers/crypto/intel/qat/qat_common/adf_accel_devices.h
index 4ff5729a3496..9d5fdd529a2e 100644
--- a/drivers/crypto/intel/qat/qat_common/adf_accel_devices.h
+++ b/drivers/crypto/intel/qat/qat_common/adf_accel_devices.h
@@ -92,6 +92,7 @@ enum ras_errors {
 
 struct adf_error_counters {
 	atomic_t counter[ADF_RAS_ERRORS];
+	bool sysfs_added;
 	bool enabled;
 };
 
diff --git a/drivers/crypto/intel/qat/qat_common/adf_sysfs_ras_counters.c b/drivers/crypto/intel/qat/qat_common/adf_sysfs_ras_counters.c
index cffe2d722995..e97c67c87b3c 100644
--- a/drivers/crypto/intel/qat/qat_common/adf_sysfs_ras_counters.c
+++ b/drivers/crypto/intel/qat/qat_common/adf_sysfs_ras_counters.c
@@ -99,6 +99,8 @@ void adf_sysfs_start_ras(struct adf_accel_dev *accel_dev)
 	if (device_add_group(&GET_DEV(accel_dev), &qat_ras_group))
 		dev_err(&GET_DEV(accel_dev),
 			"Failed to create qat_ras attribute group.\n");
+
+	accel_dev->ras_errors.sysfs_added = true;
 }
 
 void adf_sysfs_stop_ras(struct adf_accel_dev *accel_dev)
@@ -106,7 +108,10 @@ void adf_sysfs_stop_ras(struct adf_accel_dev *accel_dev)
 	if (!accel_dev->ras_errors.enabled)
 		return;
 
-	device_remove_group(&GET_DEV(accel_dev), &qat_ras_group);
+	if (accel_dev->ras_errors.sysfs_added) {
+		device_remove_group(&GET_DEV(accel_dev), &qat_ras_group);
+		accel_dev->ras_errors.sysfs_added = false;
+	}
 
 	ADF_RAS_ERR_CTR_CLEAR(accel_dev->ras_errors);
 }




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux