switch(tvp->cmd) {
        case DTV_ENUM_DELSYS:
                ncaps = 0;
-               while (fe->ops.delsys[ncaps] && ncaps < MAX_DELSYS) {
+               while (ncaps < MAX_DELSYS && fe->ops.delsys[ncaps]) {
                        tvp->u.buffer.data[ncaps] = fe->ops.delsys[ncaps];
                        ncaps++;
                }
         * supported
         */
        ncaps = 0;
-       while (fe->ops.delsys[ncaps] && ncaps < MAX_DELSYS) {
+       while (ncaps < MAX_DELSYS && fe->ops.delsys[ncaps]) {
                if (fe->ops.delsys[ncaps] == desired_system) {
                        c->delivery_system = desired_system;
                        dev_dbg(fe->dvb->device,
        * of the desired system
        */
        ncaps = 0;
-       while (fe->ops.delsys[ncaps] && ncaps < MAX_DELSYS) {
+       while (ncaps < MAX_DELSYS && fe->ops.delsys[ncaps]) {
                if (dvbv3_type(fe->ops.delsys[ncaps]) == type)
                        delsys = fe->ops.delsys[ncaps];
                ncaps++;
         * DVBv3 standard
         */
        ncaps = 0;
-       while (fe->ops.delsys[ncaps] && ncaps < MAX_DELSYS) {
+       while (ncaps < MAX_DELSYS && fe->ops.delsys[ncaps]) {
                if (dvbv3_type(fe->ops.delsys[ncaps]) != DVBV3_UNKNOWN) {
                        delsys = fe->ops.delsys[ncaps];
                        break;