"value":"In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/amd/pm: fix double free in si_parse_power_table()\n\nIn function si_parse_power_table(), array adev->pm.dpm.ps and its member\nis allocated. If the allocation of each member fails, the array itself\nis freed and returned with an error code. However, the array is later\nfreed again in si_dpm_fini() function which is called when the function\nreturns an error.\n\nThis leads to potential double free of the array adev->pm.dpm.ps, as\nwell as leak of its array members, since the members are not freed in\nthe allocation function and the array is not nulled when freed.\nIn addition adev->pm.dpm.num_ps, which keeps track of the allocated\narray member, is not updated until the member allocation is\nsuccessfully finished, this could also lead to either use after free,\nor uninitialized variable access in si_dpm_fini().\n\nFix this by postponing the free of the array until si_dpm_fini() and\nincrement adev->pm.dpm.num_ps everytime the array member is allocated."
"value":"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: drm/amd/pm: se corrige la doble liberaci\u00f3n en si_parse_power_table() En la funci\u00f3n si_parse_power_table(), se asigna la matriz adev->pm.dpm.ps y su miembro. Si la asignaci\u00f3n de cada miembro falla, la matriz en s\u00ed se libera y se devuelve con un c\u00f3digo de error. Sin embargo, la matriz se libera m\u00e1s tarde nuevamente en la funci\u00f3n si_dpm_fini() que se llama cuando la funci\u00f3n devuelve un error. Esto conduce a una posible doble liberaci\u00f3n de la matriz adev->pm.dpm.ps, as\u00ed como a la fuga de sus miembros de matriz, ya que los miembros no se liberan en la funci\u00f3n de asignaci\u00f3n y la matriz no se anula cuando se libera. Adem\u00e1s, adev->pm.dpm.num_ps, que realiza un seguimiento del miembro de la matriz asignado, no se actualiza hasta que la asignaci\u00f3n del miembro finaliza correctamente, esto tambi\u00e9n podr\u00eda conducir al use-after-free o al acceso a variables no inicializadas en si_dpm_fini(). Solucione esto posponiendo la liberaci\u00f3n de la matriz hasta si_dpm_fini() e incremente adev->pm.dpm.num_ps cada vez que se asigne el miembro de la matriz."