Skip to contentSkip to conversation

Linux DVB frontend issue

DISCUSSION Romain Baeriswyl 2 participants 2 messages May 26, 2014 1 message not in the archive Media (V4L/DVB)

lore
Share & tools
lore
#1 lore raw
In reply to a message not in the archive

Dear Mauro,

We are using the Linux DVB frontend module on our platform and we are facing an issue when having concurrent calls with FE_SET_FRONTEND and FE_GET_FRONTEND ioctl.

Issue is that both ioctls are using the same dtv_property_cache buffer. If a FE_SET_FRONTEND ioctl is interrupted by a FE_GET_FRONTEND then the dtv_property_cache is overwritten with the result of the FE_GET_FRONTEND. When the FE_SET_FRONTEND operation resumes, the dtv_property_cache may not be accurate anymore.

Did you already face this issue?

Up to now I tried, without success, to think on a fix that does not impact too much the existing code.

One solution could be to have one cache for reading properties and one other cache for writing properties, but this will impact all the drivers below the DVB frontend.

Do you see another less impacting solution?

Best regards,

Romain Baeriswyl

Abilis Systems
3, chemin Pré Fleuri
CH-1228 Plan-Les-Ouates
Geneva

#2 lore raw

Hi Romain,

Em Mon, 26 May 2014 16:17:48 +0200 (CEST) Romain Baeriswyl <[email protected]> escreveu:

Quoted 6 lines

Dear Mauro,

We are using the Linux DVB frontend module on our platform and we are facing an issue when having concurrent calls with FE_SET_FRONTEND and FE_GET_FRONTEND ioctl.

Quoted 7 lines

Issue is that both ioctls are using the same dtv_property_cache buffer. If a FE_SET_FRONTEND ioctl is interrupted by a FE_GET_FRONTEND then the dtv_property_cache is overwritten with the result of the FE_GET_FRONTEND. When the FE_SET_FRONTEND operation resumes, the dtv_property_cache may not be accurate anymore.

Did you already face this issue?

No. Never tried to do it in practice, but I don't think it is even possible to have two concurrent ioctl calls ATM, because there is a semaphore at dvb_frontend_ioctl() preventing it.

Quoted 8 lines

Up to now I tried, without success, to think on a fix that does not impact too much the existing code.

One solution could be to have one cache for reading properties and one other cache for writing properties, but this will impact all the drivers below the DVB frontend.

Do you see another less impacting solution?

Are you sure that the corruption you're seeing is not at userspace sharing the same buffer for both ioctl's?

Quoted 17 lines

Best regards,

Romain Baeriswyl

Abilis Systems
3, chemin Pré Fleuri
CH-1228 Plan-Les-Ouates
Geneva

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html